19:34:24.663 [debug] QUERY OK source="sources" db=0.4ms idle=50.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] 19:34:24.670 [debug] QUERY OK source="tasks" db=0.8ms idle=54.2ms 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"] 19:34:24.671 [debug] QUERY OK source="media_items" db=0.5ms 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] 19:34:24.674 [info] Sent 200 in 109ms 19:34:30.694 [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/7c/ae/7cae31d377a2d842d18c7d3814c69ed3fdca6c4e6df479ec6ca716ec466af1a5.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 19:34:30.695 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=493.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:30.696 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms 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 [] 19:34:30.697 [debug] Running yt-dlp command for action: get_downloadable_status 19:34:30.700 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=261.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:30.700 [debug] QUERY OK source="settings" db=0.4ms idle=262.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:30.701 [debug] QUERY OK source="settings" db=0.2ms idle=262.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:30.702 [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/4e/96/4e96ca2df3e27f5bc86f854509ac2205b046a7e2bdf2ef69791d1135c75968f4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:34:30.797 [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/aa/de/aade2747a565ad69ecd4db42aac895da821917b5084df4e922938afddb834911.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 19:34:30.798 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms 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 [] 19:34:30.799 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=102.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:30.800 [debug] Running yt-dlp command for action: get_downloadable_status 19:34:30.802 [debug] QUERY OK source="settings" db=0.3ms idle=102.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:30.803 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms 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 [] 19:34:30.803 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=101.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:30.804 [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/47/8d/478d3fa8bb85a82e79521c7777030900327855c3b5bd63f03c5861e6fe6365c2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:34:35.982 [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/4e/96/4e96ca2df3e27f5bc86f854509ac2205b046a7e2bdf2ef69791d1135c75968f4.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 19:34:35.982 [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" 19:34:35.983 [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" 19:34:35.984 [info] {"args":{"id":8380},"id":226736,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":13405639,"event":"job:stop","queue_time":576085,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:34:35.995 [info] {"args":{"id":8401},"id":226737,"meta":{},"system_time":1768034075994981753,"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"]} 19:34:35.996 [debug] QUERY OK source="media_items" db=0.5ms queue=0.2ms idle=1557.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] 19:34:35.996 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:34:35.997 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=1558.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] 19:34:35.999 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.2ms idle=781.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] 19:34:36.002 [debug] QUERY OK source="media_items" db=2.8ms 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 [8401] 19:34:36.004 [debug] QUERY OK source="media_metadata" db=0.2ms queue=0.1ms idle=9.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] 19:34:36.005 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms 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] 19:34:36.007 [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 [] 19:34:36.007 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:34:36.008 [debug] Running yt-dlp command for action: get_downloadable_status 19:34:36.009 [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 [] 19:34:36.010 [debug] QUERY OK source="settings" db=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 [] 19:34:36.010 [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 [] 19:34:36.010 [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/77/51/775136dac19e698e38a4806d58aea91054903e1de6cd161918efa18ede229a27.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:34:36.267 [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/47/8d/478d3fa8bb85a82e79521c7777030900327855c3b5bd63f03c5861e6fe6365c2.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 19:34:36.268 [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" 19:34:36.268 [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" 19:34:36.269 [info] {"args":{"id":8350},"id":226735,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":13691425,"event":"job:stop","queue_time":576085,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:34:36.280 [info] {"args":{"id":8418},"id":226738,"meta":{},"system_time":1768034076279688420,"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"]} 19:34:36.281 [debug] QUERY OK source="media_items" db=0.8ms idle=270.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] 19:34:36.282 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:34:36.284 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=272.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] 19:34:36.285 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=63.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] 19:34:36.287 [debug] QUERY OK source="media_items" db=0.9ms idle=16.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 [8418] 19:34:36.290 [debug] QUERY OK source="media_metadata" db=0.3ms idle=10.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] 19:34:36.291 [debug] QUERY OK source="media_profiles" db=0.5ms idle=9.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] 19:34:36.293 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:34:36.293 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms 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 [] 19:34:36.294 [debug] Running yt-dlp command for action: get_downloadable_status 19:34:36.296 [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 [] 19:34:36.296 [debug] QUERY OK source="settings" db=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 [] 19:34:36.297 [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 [] 19:34:36.297 [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/7b/11/7b1197744024c98b35c2ea66dc3823b02cb4b6d10cce5cf46415598ea5e6a153.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:34:41.507 [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/77/51/775136dac19e698e38a4806d58aea91054903e1de6cd161918efa18ede229a27.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 19:34:41.508 [debug] QUERY OK source="settings" db=0.4ms idle=272.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:41.509 [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 [] 19:34:41.510 [debug] Running yt-dlp command for action: get_downloadable_status 19:34:41.514 [debug] QUERY OK source="settings" db=0.4ms 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 [] 19:34:41.514 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=76.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:41.515 [debug] QUERY OK source="settings" db=0.2ms idle=76.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:41.515 [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/cc/d1/ccd1885d155d47d3806f99df8c81769921eba4b72e3d875147933332f11ce782.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:34:41.997 [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/7b/11/7b1197744024c98b35c2ea66dc3823b02cb4b6d10cce5cf46415598ea5e6a153.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 19:34:41.998 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=489.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:41.999 [debug] QUERY OK source="settings" db=0.3ms idle=489.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:42.000 [debug] Running yt-dlp command for action: get_downloadable_status 19:34:42.002 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=487.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:42.002 [debug] QUERY OK source="settings" db=0.4ms idle=487.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:42.003 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=487.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:42.004 [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/47/7e/477e2502272b8fe21af2e8b858bc494c0d3dcf7a722c180fa041e173170a59e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:34:46.873 [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/cc/d1/ccd1885d155d47d3806f99df8c81769921eba4b72e3d875147933332f11ce782.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 19:34:46.873 [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" 19:34:46.874 [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" 19:34:46.875 [info] {"args":{"id":8401},"id":226737,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10879272,"event":"job:stop","queue_time":13990156,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:34:47.542 [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/47/7e/477e2502272b8fe21af2e8b858bc494c0d3dcf7a722c180fa041e173170a59e2.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 19:34:47.542 [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" 19:34:47.543 [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" 19:34:47.544 [info] {"args":{"id":8418},"id":226738,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11263586,"event":"job:stop","queue_time":14276168,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:34:48.057 [info] {"source":"oban","duration":19602,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:34:54.286 [info] {"args":{"id":11},"id":226716,"meta":{},"system_time":1768034094286754604,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:34:54.287 [debug] QUERY OK source="sources" db=0.7ms idle=848.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] 19:34:54.288 [debug] QUERY OK source="settings" db=0.4ms idle=849.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:34:54.289 [debug] QUERY OK source="media_profiles" db=0.8ms idle=850.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] 19:34:54.290 [debug] QUERY OK source="settings" db=0.7ms 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 [] 19:34:54.291 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 19:34:54.291 [debug] QUERY OK source="settings" db=0.6ms 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 [] 19:34:54.292 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:34:54.875 [debug] QUERY OK source="media_items" db=4.7ms idle=582.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, "VSW2XDMy1n4", "IAT_Zf2PCL4", "-xT57w8ZS8U", "EdS_OqCQSew", "FwEJK_d8y8c", "X07XF175FSA", "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", ...] 19:34:54.888 [debug] QUERY OK source="media_items" db=10.9ms idle=588.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")))) [11] 19:34:54.895 [debug] QUERY OK source="tasks" db=1.0ms idle=18.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226740, 11, ~U[2026-01-10 08:34:54Z], ~U[2026-01-10 08:34:54Z]] 19:34:54.896 [info] {"args":{"id":11},"id":226716,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":608425,"event":"job:stop","queue_time":215677,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:35:00.973 [info] {"source":"oban","duration":570,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:35:12.350 [info] {"args":{"id":25},"id":226717,"meta":{},"system_time":1768034112350376728,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:35:12.351 [debug] QUERY OK source="sources" db=0.9ms idle=1912.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] 19:35:12.352 [debug] QUERY OK source="settings" db=0.7ms idle=1913.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:35:12.354 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1016.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] 19:35:12.355 [debug] QUERY OK source="settings" db=1.0ms 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 [] 19:35:12.355 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 19:35:12.356 [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 [] 19:35:12.356 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:35:12.684 [debug] QUERY OK source="media_items" db=2.4ms idle=329.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"] 19:35:12.686 [debug] QUERY OK source="media_items" db=1.7ms idle=331.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] 19:35:12.691 [debug] QUERY OK source="tasks" db=1.0ms idle=334.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226741, 25, ~U[2026-01-10 08:35:12Z], ~U[2026-01-10 08:35:12Z]] 19:35:12.692 [info] {"args":{"id":25},"id":226717,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":341178,"event":"job:stop","queue_time":551541,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:35:18.066 [info] {"source":"oban","duration":8312,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:35:26.288 [info] GET / 19:35:26.288 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:35:26.289 [debug] QUERY OK source="settings" db=0.4ms idle=1850.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:35:26.290 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=1851.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:35:26.291 [debug] QUERY OK source="sources" db=0.2ms idle=1852.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:35:26.321 [debug] QUERY OK source="media_items" db=29.5ms queue=0.1ms idle=914.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:35:26.325 [debug] QUERY OK source="media_items" db=3.3ms idle=883.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:35:26.325 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=35.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:35:26.326 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:35:26.327 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:35:26.332 [debug] QUERY OK source="media_items" db=3.6ms 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 (NOT (m0."media_filepath" IS NULL)) [] 19:35:26.334 [debug] QUERY OK source="media_items" db=1.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 INNER 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] 19:35:26.335 [debug] QUERY OK source="sources" db=0.4ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:35:26.380 [debug] QUERY OK source="media_items" db=37.6ms idle=16.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:35:26.382 [debug] QUERY OK source="media_items" db=1.2ms idle=48.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] 19:35:26.383 [debug] QUERY OK source="sources" db=0.5ms idle=47.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" IN (?,?)) [27, 5] 19:35:26.389 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=53.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"] 19:35:26.391 [info] Sent 200 in 103ms 19:35:31.404 [info] {"args":{"id":2},"id":226718,"meta":{},"system_time":1768034131404134909,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:35:31.405 [debug] QUERY OK source="sources" db=1.2ms idle=1965.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] 19:35:31.413 [debug] QUERY OK source="settings" db=6.8ms queue=0.1ms idle=1966.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:35:31.414 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=1023.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] 19:35:31.421 [debug] QUERY OK source="settings" db=5.9ms queue=0.2ms idle=19.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:35:31.421 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 19:35:31.422 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=17.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:35:31.422 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:35:31.944 [debug] QUERY OK source="media_items" db=4.1ms idle=533.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, "Usk1j8IT7ww", "eIpWmOMdYMA", "M08XtzkUg2A", "XC32_9oNoeQ", "gVqE98_flmc", "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", ...] 19:35:31.962 [debug] QUERY OK source="media_items" db=15.3ms idle=534.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] 19:35:31.968 [debug] QUERY OK source="tasks" db=1.2ms idle=544.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226742, 2, ~U[2026-01-10 08:35:31Z], ~U[2026-01-10 08:35:31Z]] 19:35:31.969 [info] {"args":{"id":2},"id":226718,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":564291,"event":"job:stop","queue_time":314925,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:35:48.089 [info] {"source":"oban","duration":22368,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:36:00.975 [info] {"source":"oban","duration":332,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:36:18.100 [info] {"source":"oban","duration":10660,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:36:31.591 [info] GET / 19:36:31.591 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:36:31.592 [debug] QUERY OK source="settings" db=0.9ms idle=152.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:36:31.593 [debug] QUERY OK source="media_profiles" db=0.5ms idle=153.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:36:31.594 [debug] QUERY OK source="sources" db=0.4ms idle=154.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:36:31.655 [debug] QUERY OK source="media_items" db=60.2ms queue=0.2ms idle=155.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:36:31.660 [debug] QUERY OK source="media_items" db=4.9ms queue=0.1ms idle=75.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:36:31.662 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=68.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:36:31.663 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=68.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:36:31.665 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=69.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:36:31.670 [debug] QUERY OK source="media_items" db=3.4ms 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 (NOT (m0."media_filepath" IS NULL)) [] 19:36:31.672 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=10.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] 19:36:31.674 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms 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" IN (?,?,?)) [12, 15, 6] 19:36:31.718 [debug] QUERY OK source="media_items" db=38.0ms idle=17.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:36:31.722 [debug] QUERY OK source="media_items" db=2.7ms queue=0.2ms idle=53.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] 19:36:31.724 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=52.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 (?,?)) [27, 5] 19:36:31.730 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=57.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"] 19:36:31.732 [info] Sent 200 in 141ms 19:36:36.617 [info] {"args":{"id":1},"id":226719,"meta":{},"system_time":1768034196616809286,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:36:36.618 [debug] QUERY OK source="sources" db=1.3ms idle=1177.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] 19:36:36.620 [debug] QUERY OK source="settings" db=0.6ms idle=1179.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:36:36.627 [debug] QUERY OK source="media_profiles" db=7.1ms idle=1023.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] 19:36:36.629 [debug] QUERY OK source="settings" db=1.2ms idle=24.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:36:36.629 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 19:36:36.629 [debug] QUERY OK source="settings" db=0.4ms 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 [] 19:36:36.630 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:36:37.054 [debug] QUERY OK source="media_items" db=5.1ms queue=0.1ms idle=429.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, "W4asNKhu7Nk", "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", ...] 19:36:37.064 [debug] QUERY OK source="media_items" db=5.7ms idle=438.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")))) [1] 19:36:37.068 [debug] QUERY OK source="tasks" db=0.8ms idle=437.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226743, 1, ~U[2026-01-10 08:36:37Z], ~U[2026-01-10 08:36:37Z]] 19:36:37.069 [info] {"args":{"id":1},"id":226719,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":452044,"event":"job:stop","queue_time":474666,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:36:45.646 [info] {"args":{"id":19},"id":226720,"meta":{},"system_time":1768034205645770774,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:36:45.647 [debug] QUERY OK source="sources" db=0.7ms idle=1206.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] 19:36:45.648 [debug] QUERY OK source="settings" db=0.7ms idle=1207.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:36:45.649 [debug] QUERY OK source="media_profiles" db=0.5ms 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] 19:36:45.650 [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 [] 19:36:45.650 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 19:36:45.651 [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 [] 19:36:45.651 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:36:45.993 [debug] QUERY OK source="media_items" db=3.7ms queue=0.1ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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"] 19:36:45.998 [debug] QUERY OK source="media_items" db=2.1ms queue=0.1ms idle=347.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] 19:36:46.005 [debug] QUERY OK source="tasks" db=1.2ms queue=0.1ms idle=352.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226744, 19, ~U[2026-01-10 08:36:46Z], ~U[2026-01-10 08:36:46Z]] 19:36:46.006 [info] {"args":{"id":19},"id":226720,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":359521,"event":"job:stop","queue_time":554392,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:36:48.113 [info] {"source":"oban","duration":12108,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:37:00.977 [info] {"source":"oban","duration":553,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:37:18.125 [info] {"source":"oban","duration":11022,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:37:34.110 [info] GET / 19:37:34.110 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:37:34.111 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:37:34.111 [debug] QUERY OK source="media_profiles" db=0.1ms idle=671.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:37:34.111 [debug] QUERY OK source="sources" db=0.1ms idle=672.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:37:34.144 [debug] QUERY OK source="media_items" db=32.2ms idle=672.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:37:34.153 [debug] QUERY OK source="media_items" db=9.1ms queue=0.1ms idle=357.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:37:34.154 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=42.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:37:34.155 [debug] QUERY OK source="settings" db=0.4ms idle=43.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:37:34.156 [debug] QUERY OK source="settings" db=0.3ms idle=44.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:37:34.168 [debug] QUERY OK source="media_items" db=10.6ms idle=13.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)) [] 19:37:34.169 [debug] QUERY OK source="media_items" db=1.4ms 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 INNER 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] 19:37:34.170 [debug] QUERY OK source="sources" db=0.3ms idle=15.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 (?,?,?)) [12, 15, 6] 19:37:34.209 [debug] QUERY OK source="media_items" db=34.9ms idle=19.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:37:34.211 [debug] QUERY OK source="media_items" db=1.6ms 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" FROM "media_items" AS m0 INNER 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] 19:37:34.212 [debug] QUERY OK source="sources" db=0.2ms idle=44.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] 19:37:34.214 [debug] QUERY OK source="tasks" db=0.3ms idle=44.5ms 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"] 19:37:34.215 [info] Sent 200 in 105ms 19:37:37.802 [info] {"args":{"id":26},"id":226721,"meta":{},"system_time":1768034257802186763,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:37:37.812 [debug] QUERY OK source="sources" db=10.1ms idle=363.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] 19:37:37.814 [debug] QUERY OK source="settings" db=1.0ms idle=373.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:37:37.815 [debug] QUERY OK source="media_profiles" db=0.7ms idle=375.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] 19:37:37.819 [debug] QUERY OK source="settings" db=3.6ms idle=20.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:37:37.819 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 19:37:37.819 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:37:37.820 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:37:38.293 [debug] QUERY OK source="media_items" db=2.4ms 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 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "UO8_-B-383w", "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", ...] 19:37:38.299 [debug] QUERY OK source="media_items" db=4.6ms idle=480.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] 19:37:38.302 [debug] QUERY OK source="tasks" db=0.6ms idle=482.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226745, 26, ~U[2026-01-10 08:37:38Z], ~U[2026-01-10 08:37:38Z]] 19:37:38.303 [info] {"args":{"id":26},"id":226721,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":500760,"event":"job:stop","queue_time":428602,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:37:48.150 [info] {"source":"oban","duration":23948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:37:49.839 [info] {"args":{"id":15},"id":226722,"meta":{},"system_time":1768034269839159505,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:37:49.840 [debug] QUERY OK source="sources" db=0.8ms idle=400.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] 19:37:49.842 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=401.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:37:49.844 [debug] QUERY OK source="media_profiles" db=1.2ms idle=403.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] 19:37:49.845 [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 [] 19:37:49.845 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 19:37:49.846 [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 [] 19:37:49.846 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:37:50.322 [debug] QUERY OK source="media_items" db=2.1ms idle=479.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, "OCnm1p7J38Q", "javP2Zg24jM", "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", ...] 19:37:50.332 [debug] QUERY OK source="media_items" db=7.8ms idle=482.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")))) [15] 19:37:50.336 [debug] QUERY OK source="tasks" db=0.9ms idle=489.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226746, 15, ~U[2026-01-10 08:37:50Z], ~U[2026-01-10 08:37:50Z]] 19:37:50.337 [info] {"args":{"id":15},"id":226722,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":497319,"event":"job:stop","queue_time":426850,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:38:00.978 [info] {"source":"oban","duration":549,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:38:13.921 [info] {"args":{"id":3},"id":226723,"meta":{},"system_time":1768034293921735463,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:38:13.923 [debug] QUERY OK source="sources" db=0.8ms idle=482.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] 19:38:13.923 [debug] QUERY OK source="settings" db=0.6ms idle=483.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:38:13.924 [debug] QUERY OK source="media_profiles" db=0.7ms idle=484.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] 19:38:13.925 [debug] QUERY OK source="settings" db=0.5ms 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 [] 19:38:13.925 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 19:38:13.926 [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 [] 19:38:13.926 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:38:14.381 [debug] QUERY OK source="media_items" db=5.1ms idle=452.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "rzQeUM-lMUY", "BkUHm95UvCw", "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", ...] 19:38:14.390 [debug] QUERY OK source="media_items" db=7.1ms idle=459.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] 19:38:14.394 [debug] QUERY OK source="tasks" db=0.8ms idle=466.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226747, 3, ~U[2026-01-10 08:38:14Z], ~U[2026-01-10 08:38:14Z]] 19:38:14.395 [info] {"args":{"id":3},"id":226723,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":472666,"event":"job:stop","queue_time":438852,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:38:18.175 [info] {"source":"oban","duration":24095,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:38:25.960 [info] {"args":{"id":22},"id":226724,"meta":{},"system_time":1768034305960036353,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:38:25.961 [debug] QUERY OK source="sources" db=1.1ms idle=521.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] 19:38:25.962 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=522.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:38:25.963 [debug] QUERY OK source="media_profiles" db=0.9ms idle=523.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] 19:38:25.965 [debug] QUERY OK source="settings" db=0.8ms 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 [] 19:38:25.965 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 19:38:25.965 [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 [] 19:38:25.966 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:38:26.291 [debug] QUERY OK source="media_items" db=2.5ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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"] 19:38:26.293 [debug] QUERY OK source="settings" db=0.5ms 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 [] 19:38:26.294 [debug] QUERY OK source="settings" db=0.6ms idle=329.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:38:26.294 [debug] Running yt-dlp command for action: get_media_attributes 19:38:26.297 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:38:26.298 [debug] QUERY OK source="settings" db=0.6ms idle=331.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:38:26.299 [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 [] 19:38:26.299 [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/f8/f7/f8f753eb59e8aa2c3853cd120621aa73116b76d66d5a9707b4929f3ba06d30c2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:38:33.039 [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/f8/f7/f8f753eb59e8aa2c3853cd120621aa73116b76d66d5a9707b4929f3ba06d30c2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 19:38:33.040 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 19:38:33.041 [debug] QUERY OK source="media_items" db=0.7ms idle=1598.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] 19:38:33.045 [debug] QUERY OK source="tasks" db=0.5ms idle=1067.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226748, 22, ~U[2026-01-10 08:38:33Z], ~U[2026-01-10 08:38:33Z]] 19:38:33.046 [info] {"args":{"id":22},"id":226724,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":7085250,"event":"job:stop","queue_time":774029,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:38:38.617 [info] GET / 19:38:38.617 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:38:38.618 [debug] QUERY OK source="settings" db=0.5ms queue=0.3ms idle=621.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:38:38.619 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=177.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:38:38.620 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=178.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:38:38.681 [debug] QUERY OK source="media_items" db=60.6ms queue=0.1ms idle=178.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:38:38.687 [debug] QUERY OK source="media_items" db=4.9ms queue=0.2ms idle=240.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:38:38.688 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=69.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:38:38.689 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=69.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:38:38.692 [debug] QUERY OK source="settings" db=1.0ms queue=0.2ms idle=70.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:38:38.698 [debug] QUERY OK source="media_items" db=3.5ms idle=12.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)) [] 19:38:38.699 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=11.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] 19:38:38.701 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=11.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 (?,?,?)) [12, 15, 6] 19:38:38.746 [debug] QUERY OK source="media_items" db=37.5ms idle=18.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"))) [] 19:38:38.748 [debug] QUERY OK source="media_items" db=1.9ms queue=0.1ms idle=54.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] 19:38:38.750 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=51.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 (?,?)) [27, 5] 19:38:38.757 [debug] QUERY OK source="tasks" db=0.4ms idle=57.5ms 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"] 19:38:38.759 [info] Sent 200 in 142ms 19:38:48.195 [info] {"source":"oban","duration":19262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:39:00.980 [info] {"source":"oban","duration":860,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:39:05.084 [info] {"args":{"id":18},"id":226725,"meta":{},"system_time":1768034345084464338,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:39:05.086 [debug] QUERY OK source="sources" db=1.1ms idle=642.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] 19:39:05.093 [debug] QUERY OK source="settings" db=6.9ms idle=644.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:05.099 [debug] QUERY OK source="media_profiles" db=6.1ms 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] 19:39:05.101 [debug] QUERY OK source="settings" db=0.9ms 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 [] 19:39:05.101 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 19:39:05.102 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=17.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:05.102 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:39:05.144 [info] GET /.well-known/acme-challenge/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc 19:39:05.145 [debug] QUERY OK source="settings" db=0.6ms idle=58.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:05.146 [debug] QUERY OK source="settings" db=0.5ms idle=51.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:05.146 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:39:05.147 [error] #PID<0.50503.0> running PinchflatWeb.Endpoint (connection #PID<0.50502.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc ** (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/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50502.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 35514}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50503.0>, params: %{}, path_info: [".well-known", "acme-challenge", "xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc"], 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/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc"}, {"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/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR3pUBINWDxfcADzGB"} ], 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.50502.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 35514}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50502.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 35514}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50503.0>, params: %{}, path_info: [".well-known", "acme-challenge", "xI4TDKIfdwCEz_jBjETzVw88mo0rRPTGUK1ITSaW3fc"], 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) 19:39:05.574 [debug] QUERY OK source="media_items" db=4.3ms idle=470.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, "XCGRhxHrjWg", "fyWYr4PukJY", "-w4HeclDfgE", "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", ...] 19:39:05.583 [debug] QUERY OK source="media_items" db=6.1ms 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")))) [18] 19:39:05.587 [debug] QUERY OK source="tasks" db=0.7ms idle=440.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226749, 18, ~U[2026-01-10 08:39:05Z], ~U[2026-01-10 08:39:05Z]] 19:39:05.589 [info] {"args":{"id":18},"id":226725,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":503397,"event":"job:stop","queue_time":482998,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:39:08.329 [info] GET /.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY 19:39:08.331 [debug] QUERY OK source="settings" db=1.1ms queue=0.2ms idle=887.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:08.332 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=889.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:08.332 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:39:08.334 [error] #PID<0.50505.0> running PinchflatWeb.Endpoint (connection #PID<0.50504.0>, stream id 1) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY ** (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/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50505.0>, params: %{}, path_info: [".well-known", "acme-challenge", "L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR31LaoEmz0xIADBpi"} ], 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.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50505.0>, params: %{}, path_info: [".well-known", "acme-challenge", "L022WwhrNYVa8BTYyl99fQ3dcc_FylVOylzCLLIQmeY"], 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.e (truncated) 19:39:10.878 [info] GET /.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg 19:39:10.879 [debug] QUERY OK source="settings" db=1.1ms idle=1435.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:10.880 [debug] QUERY OK source="settings" db=0.7ms idle=1436.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:10.881 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:39:10.881 [error] #PID<0.50506.0> running PinchflatWeb.Endpoint (connection #PID<0.50504.0>, stream id 2) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg ** (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/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50506.0>, params: %{}, path_info: [".well-known", "acme-challenge", "awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR3-rIZ7eDXwUADBqC"} ], 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.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50506.0>, params: %{}, path_info: [".well-known", "acme-challenge", "awvhP9BWwLyRzIvetLsliMnce8iUL1dUCNPYTKhOplg"], 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.e (truncated) 19:39:11.655 [info] GET /.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M 19:39:11.657 [debug] QUERY OK source="settings" db=1.2ms queue=0.1ms idle=776.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:11.658 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=776.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:11.658 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:39:11.659 [error] #PID<0.50507.0> running PinchflatWeb.Endpoint (connection #PID<0.50504.0>, stream id 3) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M ** (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/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50507.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR4BkfLQiD3XwADBqi"} ], 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.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50507.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Y3udQNj0YW2zoFsegI6uzRtuPCRQgx4JkeUfA_piD2M"], 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.e (truncated) 19:39:14.833 [info] GET /.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo 19:39:14.834 [debug] QUERY OK source="settings" db=0.6ms idle=1390.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:14.835 [debug] QUERY OK source="settings" db=0.4ms idle=1391.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:14.835 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:39:14.836 [error] #PID<0.50508.0> running PinchflatWeb.Endpoint (connection #PID<0.50504.0>, stream id 4) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo ** (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/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 4, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50508.0>, params: %{}, path_info: [".well-known", "acme-challenge", "WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR4NaOHcLX_sEADBrC"} ], 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.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 4, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 4, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50508.0>, params: %{}, path_info: [".well-known", "acme-challenge", "WFP_uCvpVXeH6da626UWI23bBtaN4Dly4ScDX1T5xbo"], 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.e (truncated) 19:39:16.276 [info] GET /.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM 19:39:16.277 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1441.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:16.278 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1173.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:16.278 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:39:16.279 [error] #PID<0.50509.0> running PinchflatWeb.Endpoint (connection #PID<0.50504.0>, stream id 5) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM ** (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/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 5, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50509.0>, params: %{}, path_info: [".well-known", "acme-challenge", "qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR4SyIhDFRXJwADBri"} ], 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.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 5, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50504.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 35530}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 5, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50509.0>, params: %{}, path_info: [".well-known", "acme-challenge", "qx1G0LmOY-4uIqPKPNYT8ilX53d7eo6Ed0y898mPyvM"], 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.e (truncated) 19:39:18.205 [info] {"source":"oban","duration":9496,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:39:33.399 [info] GET /.well-known/acme-challenge/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI 19:39:33.400 [debug] QUERY OK source="settings" db=0.6ms idle=1956.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:33.401 [debug] QUERY OK source="settings" db=0.4ms idle=1957.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:33.401 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:39:33.401 [error] #PID<0.50512.0> running PinchflatWeb.Endpoint (connection #PID<0.50511.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI ** (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/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50511.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37602}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50512.0>, params: %{}, path_info: [".well-known", "acme-challenge", "9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI"], 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/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI"}, {"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/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR5SkjtzROxkAADzHB"} ], 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.50511.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37602}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50511.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37602}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50512.0>, params: %{}, path_info: [".well-known", "acme-challenge", "9DXn_XJL5wLwnKBxs2xpbx8YX5XhhvxOzE2WhxnnKVI"], 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) 19:39:48.216 [info] {"source":"oban","duration":10259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:39:49.680 [info] GET / 19:39:49.680 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:39:49.681 [debug] QUERY OK source="settings" db=0.3ms idle=1237.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:49.681 [debug] QUERY OK source="media_profiles" db=0.5ms idle=481.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:39:49.682 [debug] QUERY OK source="sources" db=0.3ms idle=238.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:39:49.710 [debug] QUERY OK source="media_items" db=27.9ms queue=0.1ms idle=239.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:39:49.714 [debug] QUERY OK source="media_items" db=3.1ms queue=0.1ms idle=267.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:39:49.715 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=34.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:49.716 [debug] QUERY OK source="settings" db=0.2ms idle=34.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:49.717 [debug] QUERY OK source="settings" db=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 [] 19:39:49.723 [debug] QUERY OK source="media_items" db=3.6ms queue=0.1ms idle=8.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)) [] 19:39:49.725 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:39:49.727 [debug] QUERY OK source="sources" db=0.9ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:39:49.791 [debug] QUERY OK source="media_items" db=58.1ms queue=0.1ms idle=17.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:39:49.794 [debug] QUERY OK source="media_items" db=1.9ms idle=74.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:39:49.795 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=71.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 (?,?)) [27, 5] 19:39:49.799 [debug] QUERY OK source="tasks" db=0.5ms idle=73.6ms 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"] 19:39:49.800 [info] Sent 200 in 120ms 19:39:50.903 [info] GET /.well-known/acme-challenge/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus 19:39:50.904 [debug] QUERY OK source="settings" db=0.4ms idle=1112.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:50.905 [debug] QUERY OK source="settings" db=0.5ms idle=1110.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:39:50.905 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:39:50.906 [error] #PID<0.50517.0> running PinchflatWeb.Endpoint (connection #PID<0.50515.0>, stream id 2) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus ** (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/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50515.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 38872}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50517.0>, params: %{}, path_info: [".well-known", "acme-challenge", "A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus"], 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/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus"}, {"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/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR6Tx9Useq4YcADBwC"} ], 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.50515.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 38872}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50515.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 38872}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50517.0>, params: %{}, path_info: [".well-known", "acme-challenge", "A9SdyhvlG4bu1UFbEKXpBPfUXqR8XFXHFf8EfUInQus"], 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) 19:40:00.982 [info] {"source":"oban","duration":467,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:40:02.238 [info] {"args":{"id":23},"id":226726,"meta":{},"system_time":1768034402238200477,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:40:02.246 [debug] QUERY OK source="sources" db=7.2ms queue=0.1ms idle=1256.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] 19:40:02.248 [debug] QUERY OK source="settings" db=1.6ms queue=0.1ms idle=1022.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:02.249 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=805.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] 19:40:02.253 [debug] QUERY OK source="settings" db=3.5ms queue=0.1ms idle=20.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:02.253 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 19:40:02.254 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=15.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:02.254 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:40:02.579 [debug] QUERY OK source="media_items" db=3.2ms idle=329.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"] 19:40:02.582 [debug] QUERY OK source="media_items" db=1.6ms idle=332.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] 19:40:02.587 [debug] QUERY OK source="tasks" db=1.1ms idle=332.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226750, 23, ~U[2026-01-10 08:40:02Z], ~U[2026-01-10 08:40:02Z]] 19:40:02.589 [info] {"args":{"id":23},"id":226726,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":349767,"event":"job:stop","queue_time":544389,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:40:18.241 [info] {"source":"oban","duration":23771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:40:24.302 [info] {"args":{"id":10},"id":226727,"meta":{},"system_time":1768034424302479987,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:40:24.304 [debug] QUERY OK source="sources" db=0.9ms idle=1859.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] 19:40:24.305 [debug] QUERY OK source="settings" db=0.7ms 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 [] 19:40:24.306 [debug] QUERY OK source="media_profiles" db=0.7ms idle=862.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] 19:40:24.307 [debug] QUERY OK source="settings" db=0.7ms 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 [] 19:40:24.307 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 19:40:24.308 [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 [] 19:40:24.308 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:40:24.704 [debug] QUERY OK source="media_items" db=6.1ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "g0z7tR6KdIE", "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", ...] 19:40:24.706 [debug] QUERY OK source="settings" db=0.5ms idle=400.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:24.707 [debug] QUERY OK source="settings" db=0.3ms idle=400.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:24.707 [debug] Running yt-dlp command for action: get_media_attributes 19:40:24.709 [debug] QUERY OK source="settings" db=0.3ms idle=401.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:24.709 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:40:24.710 [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 [] 19:40:24.710 [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/8e/08/8e085e64ca828eeae2d200c8f615eb6961575a443f3632a0e8587d1f1c11a775.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:40:29.398 [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/8e/08/8e085e64ca828eeae2d200c8f615eb6961575a443f3632a0e8587d1f1c11a775.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. 19:40:29.398 [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} 19:40:29.400 [debug] QUERY OK source="media_items" db=2.3ms idle=954.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")))) [10] 19:40:29.407 [debug] QUERY OK source="tasks" db=1.1ms idle=961.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226751, 10, ~U[2026-01-10 08:40:29Z], ~U[2026-01-10 08:40:29Z]] 19:40:29.408 [info] {"args":{"id":10},"id":226727,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5104697,"event":"job:stop","queue_time":665078,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:40:35.340 [info] GET /.well-known/acme-challenge/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8 19:40:35.341 [debug] QUERY OK source="settings" db=0.4ms 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 [] 19:40:35.342 [debug] QUERY OK source="settings" db=0.3ms idle=898.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:35.342 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:40:35.343 [error] #PID<0.50528.0> running PinchflatWeb.Endpoint (connection #PID<0.50527.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8 ** (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/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37084}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50528.0>, params: %{}, path_info: [".well-known", "acme-challenge", "YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8"], 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/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8"}, {"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/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR85Ub4EGlL5oADBxi"} ], 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.50527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37084}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37084}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50528.0>, params: %{}, path_info: [".well-known", "acme-challenge", "YFIT823Lafpft6Z3CrLuLRcigY_6_GDgmfeRBnPQya8"], 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) 19:40:42.611 [info] GET /.well-known/acme-challenge/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE 19:40:42.612 [debug] QUERY OK source="settings" db=0.7ms idle=259.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:42.614 [debug] QUERY OK source="settings" db=1.1ms queue=0.2ms idle=169.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:42.614 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:40:42.615 [error] #PID<0.50530.0> running PinchflatWeb.Endpoint (connection #PID<0.50529.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE ** (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/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50529.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37100}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50530.0>, params: %{}, path_info: [".well-known", "acme-challenge", "DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE"], 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/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE"}, {"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/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlR9UaDimK0wCoADByC"} ], 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.50529.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37100}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50529.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37100}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50530.0>, params: %{}, path_info: [".well-known", "acme-challenge", "DHWqVqQzOGWpMSO2UtMUw_vnZtolBU2p1WrQnhUxIVE"], 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) 19:40:48.263 [info] {"source":"oban","duration":21252,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:40:52.169 [info] GET / 19:40:52.169 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:40:52.170 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1726.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:52.171 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1727.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:40:52.172 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=1728.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:40:52.234 [debug] QUERY OK source="media_items" db=61.5ms queue=0.1ms idle=791.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:40:52.238 [debug] QUERY OK source="media_items" db=3.2ms queue=0.2ms idle=791.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:40:52.239 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=68.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:52.240 [debug] QUERY OK source="settings" db=0.3ms idle=68.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:52.241 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=68.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:40:52.247 [debug] QUERY OK source="media_items" db=3.5ms idle=9.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 (m0."media_filepath" IS NULL)) [] 19:40:52.248 [debug] QUERY OK source="media_items" db=0.6ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:40:52.249 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:40:52.292 [debug] QUERY OK source="media_items" db=35.4ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:40:52.295 [debug] QUERY OK source="media_items" db=2.1ms queue=0.1ms idle=51.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:40:52.297 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=49.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" IN (?,?)) [27, 5] 19:40:52.303 [debug] QUERY OK source="tasks" db=0.3ms idle=55.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"] 19:40:52.305 [info] Sent 200 in 136ms 19:41:00.983 [info] {"source":"oban","duration":375,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:41:02.421 [info] {"args":{"id":6},"id":226728,"meta":{},"system_time":1768034462420817952,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:41:02.422 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=977.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] 19:41:02.426 [debug] QUERY OK source="settings" db=3.4ms queue=0.1ms idle=979.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:41:02.427 [debug] QUERY OK source="media_profiles" db=0.3ms idle=983.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] 19:41:02.431 [debug] QUERY OK source="settings" db=3.4ms 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 [] 19:41:02.431 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 19:41:02.432 [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 [] 19:41:02.432 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:41:02.882 [debug] QUERY OK source="media_items" db=5.8ms queue=0.1ms idle=453.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, "cIrfWaWIByQ", "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", ...] 19:41:02.890 [debug] QUERY OK source="media_items" db=3.7ms idle=459.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] 19:41:02.895 [debug] QUERY OK source="tasks" db=1.0ms idle=462.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226752, 6, ~U[2026-01-10 08:41:02Z], ~U[2026-01-10 08:41:02Z]] 19:41:02.896 [info] {"args":{"id":6},"id":226728,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":474893,"event":"job:stop","queue_time":446686,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:41:04.430 [info] {"args":{"id":24},"id":226729,"meta":{},"system_time":1768034464430097952,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:41:04.431 [debug] QUERY OK source="sources" db=1.0ms idle=1533.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] 19:41:04.432 [debug] QUERY OK source="settings" db=0.6ms idle=1526.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:41:04.433 [debug] QUERY OK source="media_profiles" db=0.7ms 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] 19:41:04.434 [debug] QUERY OK source="settings" db=0.5ms 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 [] 19:41:04.434 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 19:41:04.435 [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 [] 19:41:04.435 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:41:04.778 [debug] QUERY OK source="media_items" db=2.2ms idle=344.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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", ...] 19:41:04.781 [debug] QUERY OK source="media_items" db=1.0ms idle=347.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] 19:41:04.785 [debug] QUERY OK source="tasks" db=0.6ms idle=348.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226753, 24, ~U[2026-01-10 08:41:04Z], ~U[2026-01-10 08:41:04Z]] 19:41:04.787 [info] {"args":{"id":24},"id":226729,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":355453,"event":"job:stop","queue_time":490928,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:41:18.273 [info] {"source":"oban","duration":9471,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:41:48.296 [info] {"source":"oban","duration":20840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:41:56.726 [info] GET / 19:41:56.726 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:41:56.727 [debug] QUERY OK source="settings" db=0.4ms idle=1283.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:41:56.727 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1133.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:41:56.728 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=284.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:41:56.760 [debug] QUERY OK source="media_items" db=31.7ms queue=0.1ms idle=285.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:41:56.764 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms idle=164.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:41:56.766 [debug] QUERY OK source="settings" db=0.3ms queue=0.3ms idle=38.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:41:56.766 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=38.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:41:56.768 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=39.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:41:56.774 [debug] QUERY OK source="media_items" db=3.3ms 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 (NOT (m0."media_filepath" IS NULL)) [] 19:41:56.775 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:41:56.776 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=10.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 (?,?,?)) [12, 15, 6] 19:41:56.819 [debug] QUERY OK source="media_items" db=36.5ms idle=16.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:41:56.823 [debug] QUERY OK source="media_items" db=2.4ms queue=0.2ms idle=51.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] 19:41:56.825 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms 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" IN (?,?)) [27, 5] 19:41:56.830 [debug] QUERY OK source="tasks" db=0.3ms idle=55.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"] 19:41:56.832 [info] Sent 200 in 106ms 19:42:00.173 [info] GET /.well-known/acme-challenge/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY 19:42:00.174 [debug] QUERY OK source="settings" db=0.5ms idle=1730.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:42:00.176 [debug] QUERY OK source="settings" db=1.1ms idle=1731.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:42:00.176 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:42:00.177 [error] #PID<0.50542.0> running PinchflatWeb.Endpoint (connection #PID<0.50540.0>, stream id 2) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY ** (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/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50540.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 39048}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50542.0>, params: %{}, path_info: [".well-known", "acme-challenge", "s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY"], 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/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY"}, {"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/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlSB1WUVzrJwGEADB4C"} ], 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.50540.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 39048}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50540.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 39048}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50542.0>, params: %{}, path_info: [".well-known", "acme-challenge", "s-LarSInmAVnYXpMKZm4TN6S1fd7EDdZW8D0fZXruAY"], 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) 19:42:00.985 [info] {"source":"oban","duration":572,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:42:18.319 [info] {"source":"oban","duration":22136,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:42:45.749 [info] {"args":{"id":21},"id":226730,"meta":{},"system_time":1768034565749214066,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:42:45.750 [debug] QUERY OK source="sources" db=0.8ms idle=1016.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] 19:42:45.755 [debug] QUERY OK source="settings" db=3.8ms queue=0.1ms idle=307.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:42:45.756 [debug] QUERY OK source="media_profiles" db=0.6ms idle=312.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] 19:42:45.757 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=19.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:42:45.757 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 19:42:45.758 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:42:45.758 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:42:46.382 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms idle=627.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "9t1DPHAoHyw", "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", ...] 19:42:46.392 [debug] QUERY OK source="media_items" db=4.1ms idle=632.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")))) [21] 19:42:46.396 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=637.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226754, 21, ~U[2026-01-10 08:42:46Z], ~U[2026-01-10 08:42:46Z]] 19:42:46.397 [info] {"args":{"id":21},"id":226730,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":647609,"event":"job:stop","queue_time":244640,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:42:48.329 [info] {"source":"oban","duration":8738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:42:56.785 [info] {"args":{"id":17},"id":226731,"meta":{},"system_time":1768034576785415574,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:42:56.787 [debug] QUERY OK source="sources" db=0.7ms idle=1342.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] 19:42:56.788 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1343.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:42:56.788 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=1015.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] 19:42:56.789 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:42:56.789 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 19:42:56.790 [debug] QUERY OK source="settings" db=0.5ms 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 [] 19:42:56.791 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:42:57.046 [info] GET / 19:42:57.046 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:42:57.047 [debug] QUERY OK source="settings" db=0.2ms idle=260.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:42:57.048 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=260.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:42:57.048 [debug] QUERY OK source="sources" db=0.1ms idle=259.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:42:57.079 [debug] QUERY OK source="media_items" db=30.0ms idle=259.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:42:57.083 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms idle=288.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:42:57.084 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=36.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:42:57.085 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=36.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:42:57.087 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=37.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:42:57.100 [debug] QUERY OK source="media_items" db=10.4ms 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 (NOT (m0."media_filepath" IS NULL)) [] 19:42:57.102 [debug] QUERY OK source="media_items" db=1.6ms idle=17.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] 19:42:57.103 [debug] QUERY OK source="sources" db=0.8ms idle=18.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" IN (?,?,?)) [12, 15, 6] 19:42:57.162 [debug] QUERY OK source="media_items" db=2.7ms queue=0.1ms idle=71.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", "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", "e3XOdq86shM", ...] 19:42:57.166 [debug] QUERY OK source="media_items" db=60.1ms idle=20.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:42:57.166 [debug] QUERY OK source="media_items" db=1.0ms idle=65.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] 19:42:57.168 [debug] QUERY OK source="media_items" db=2.1ms idle=64.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:42:57.170 [debug] QUERY OK source="sources" db=0.6ms queue=0.4ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [27, 5] 19:42:57.176 [debug] QUERY OK source="tasks" db=3.4ms idle=6.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226755, 17, ~U[2026-01-10 08:42:57Z], ~U[2026-01-10 08:42:57Z]] 19:42:57.177 [debug] QUERY OK source="tasks" db=1.2ms idle=7.1ms 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"] 19:42:57.177 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 19:42:57.179 [info] {"args":{"id":17},"id":226731,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":391558,"event":"job:stop","queue_time":486238,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:42:57.180 [info] Sent 200 in 133ms 19:43:00.987 [info] {"source":"oban","duration":600,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:43:18.348 [info] {"source":"oban","duration":18745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:43:46.925 [info] {"args":{"id":16},"id":226732,"meta":{},"system_time":1768034626924853076,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:43:46.926 [debug] QUERY OK source="sources" db=0.8ms idle=481.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] 19:43:46.927 [debug] QUERY OK source="settings" db=0.2ms idle=482.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:43:46.928 [debug] QUERY OK source="media_profiles" db=0.4ms idle=482.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] 19:43:46.928 [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 [] 19:43:46.928 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 19:43:46.929 [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 [] 19:43:46.929 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:43:47.330 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "9T4hx4KjyQ8", "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", ...] 19:43:47.338 [debug] QUERY OK source="media_items" db=3.7ms queue=0.1ms 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")))) [16] 19:43:47.344 [debug] QUERY OK source="tasks" db=1.1ms idle=413.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226756, 16, ~U[2026-01-10 08:43:47Z], ~U[2026-01-10 08:43:47Z]] 19:43:47.345 [info] {"args":{"id":16},"id":226732,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":419402,"event":"job:stop","queue_time":280082,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:43:47.931 [info] {"args":{"id":9},"id":226733,"meta":{},"system_time":1768034627930908499,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:43:47.932 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=587.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" = ?) [9] 19:43:47.933 [debug] QUERY OK source="settings" db=0.5ms 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 [] 19:43:47.934 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=581.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] 19:43:47.935 [debug] QUERY OK source="settings" db=0.4ms 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 [] 19:43:47.935 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 19:43:47.936 [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 [] 19:43:47.937 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:43:48.359 [info] {"source":"oban","duration":10098,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:43:48.365 [debug] QUERY OK source="media_items" db=1.8ms idle=429.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, "16b4SEeZ45I", "el_J4DE8WnA", "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", ...] 19:43:48.371 [debug] QUERY OK source="media_items" db=2.6ms idle=433.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] 19:43:48.374 [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" [226757, 9, ~U[2026-01-10 08:43:48Z], ~U[2026-01-10 08:43:48Z]] 19:43:48.375 [info] {"args":{"id":9},"id":226733,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":443703,"event":"job:stop","queue_time":407530,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:44:00.989 [info] {"source":"oban","duration":536,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:44:03.410 [info] GET / 19:44:03.411 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:44:03.412 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1967.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:03.413 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1968.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:44:03.414 [debug] QUERY OK source="sources" db=0.6ms idle=1446.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:44:03.444 [debug] QUERY OK source="media_items" db=29.2ms queue=0.1ms idle=970.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:44:03.448 [debug] QUERY OK source="media_items" db=3.4ms queue=0.2ms idle=474.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:44:03.450 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=36.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:03.451 [debug] QUERY OK source="settings" db=0.7ms idle=36.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:03.452 [debug] QUERY OK source="settings" db=0.5ms idle=36.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:03.464 [debug] QUERY OK source="media_items" db=11.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 (m0."media_filepath" IS NULL)) [] 19:44:03.467 [debug] QUERY OK source="media_items" db=1.8ms idle=16.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:44:03.468 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:44:03.533 [debug] QUERY OK source="media_items" db=61.1ms idle=21.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:44:03.536 [debug] QUERY OK source="media_items" db=2.8ms idle=81.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:44:03.539 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=73.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 (?,?)) [27, 5] 19:44:03.546 [debug] QUERY OK source="tasks" db=0.5ms idle=79.1ms 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"] 19:44:03.548 [info] Sent 200 in 138ms 19:44:13.011 [info] {"args":{"id":20},"id":226734,"meta":{},"system_time":1768034653011473873,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:44:13.012 [debug] QUERY OK source="sources" db=0.5ms idle=1567.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] 19:44:13.013 [debug] QUERY OK source="settings" db=0.4ms idle=1568.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:13.014 [debug] QUERY OK source="media_profiles" db=1.0ms idle=1021.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] 19:44:13.020 [debug] QUERY OK source="settings" db=5.6ms 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 [] 19:44:13.020 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 19:44:13.021 [debug] QUERY OK source="settings" db=0.4ms 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 [] 19:44:13.021 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:44:13.479 [debug] QUERY OK source="media_items" db=5.6ms idle=460.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", ...] 19:44:13.492 [debug] QUERY OK source="media_items" db=8.8ms idle=469.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")))) [20] 19:44:13.497 [debug] QUERY OK source="tasks" db=1.0ms idle=475.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226758, 20, ~U[2026-01-10 08:44:13Z], ~U[2026-01-10 08:44:13Z]] 19:44:13.499 [info] {"args":{"id":20},"id":226734,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":486585,"event":"job:stop","queue_time":356275,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:44:18.383 [info] {"source":"oban","duration":23648,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:44:23.029 [info] {"args":{"id":7},"id":226739,"meta":{},"system_time":1768034663027939093,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:44:23.031 [debug] QUERY OK source="sources" db=0.7ms idle=1585.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] 19:44:23.032 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1587.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:23.033 [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] 19:44:23.034 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:44:23.034 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 19:44:23.034 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:44:23.035 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:44:23.504 [debug] QUERY OK source="media_items" db=2.3ms queue=0.1ms idle=470.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, "EzCiEv1IqiA", "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", ...] 19:44:23.513 [debug] QUERY OK source="media_items" db=4.4ms idle=476.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] 19:44:23.521 [debug] QUERY OK source="tasks" db=0.4ms idle=485.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226759, 8350, ~U[2026-01-10 08:44:23Z], ~U[2026-01-10 08:44:23Z]] 19:44:23.525 [debug] QUERY OK source="tasks" db=0.5ms idle=6.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226760, 8380, ~U[2026-01-10 08:44:23Z], ~U[2026-01-10 08:44:23Z]] 19:44:23.530 [info] {"args":{"id":8350},"id":226759,"meta":{},"system_time":1768034663530654078,"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"]} 19:44:23.531 [info] {"args":{"id":8380},"id":226760,"meta":{},"system_time":1768034663530840756,"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"]} 19:44:23.532 [debug] QUERY OK source="media_items" db=0.6ms idle=7.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] 19:44:23.532 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:44:23.533 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=7.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" = ?) [8350] 19:44:23.533 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:44:23.534 [debug] QUERY OK source="sources" db=1.4ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 19:44:23.535 [debug] QUERY OK source="sources" db=1.5ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 19:44:23.535 [debug] QUERY OK source="media_profiles" db=0.7ms 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] 19:44:23.536 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms 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] 19:44:23.537 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=0.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] 19:44:23.537 [debug] QUERY OK source="media_items" db=0.6ms 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] 19:44:23.538 [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" [226761, 8401, ~U[2026-01-10 08:44:23Z], ~U[2026-01-10 08:44:23Z]] 19:44:23.539 [debug] QUERY OK source="media_metadata" db=0.2ms idle=2.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] 19:44:23.540 [debug] QUERY OK source="media_metadata" db=0.4ms idle=2.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" = ?) [8350] 19:44:23.540 [debug] QUERY OK source="media_profiles" db=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] 19:44:23.541 [debug] QUERY OK source="media_profiles" db=1.2ms queue=0.2ms 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] 19:44:23.542 [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 [] 19:44:23.542 [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 [] 19:44:23.542 [debug] QUERY OK source="settings" db=0.5ms 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 [] 19:44:23.543 [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 [] 19:44:23.544 [debug] Running yt-dlp command for action: get_downloadable_status 19:44:23.544 [debug] Running yt-dlp command for action: get_downloadable_status 19:44:23.544 [debug] QUERY OK source="tasks" db=1.1ms queue=0.1ms idle=0.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226762, 8418, ~U[2026-01-10 08:44:23Z], ~U[2026-01-10 08:44:23Z]] 19:44:23.546 [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 [] 19:44:23.547 [debug] QUERY OK source="tasks" db=1.1ms queue=0.1ms idle=3.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226763, 7, ~U[2026-01-10 08:44:23Z], ~U[2026-01-10 08:44:23Z]] 19:44:23.548 [debug] QUERY OK source="settings" db=0.8ms 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 [] 19:44:23.548 [debug] QUERY OK source="settings" db=1.2ms 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 [] 19:44:23.549 [info] {"args":{"id":7},"id":226739,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":520031,"event":"job:stop","queue_time":436152,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:44:23.549 [debug] QUERY OK source="settings" db=0.4ms queue=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 [] 19:44:23.549 [debug] QUERY OK source="settings" db=0.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 [] 19:44:23.549 [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/56/a3/56a3de43f487003b57101259fbebe538916c1fea8fe418c4f0ce93848e295151.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:44:23.550 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:44:23.550 [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/e2/ab/e2abc8f069cee5c055fbb82f180bd3113a2e859383925f319719cfee81f40310.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:44:28.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/e2/ab/e2abc8f069cee5c055fbb82f180bd3113a2e859383925f319719cfee81f40310.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 19:44:28.824 [debug] QUERY OK source="settings" db=0.8ms queue=1.3ms idle=1377.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:28.825 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=1380.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:28.827 [debug] Running yt-dlp command for action: get_downloadable_status 19:44:28.830 [debug] QUERY OK source="settings" db=0.4ms idle=1385.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:28.830 [debug] QUERY OK source="settings" db=0.4ms idle=1386.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:28.831 [debug] QUERY OK source="settings" db=0.3ms idle=794.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:28.831 [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/56/9a562f206e5c0f6d47df307f296daa19ae08da2bc0ed82879b8ef292427cfc98.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:44:28.840 [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/56/a3/56a3de43f487003b57101259fbebe538916c1fea8fe418c4f0ce93848e295151.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 19:44:28.843 [debug] QUERY OK source="settings" db=1.7ms queue=0.1ms idle=16.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:28.844 [debug] QUERY OK source="settings" db=1.0ms queue=0.2ms idle=18.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:28.846 [debug] Running yt-dlp command for action: get_downloadable_status 19:44:28.852 [debug] QUERY OK source="settings" db=0.6ms queue=1.3ms idle=19.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:28.852 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms 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 [] 19:44:28.853 [debug] QUERY OK source="settings" db=0.4ms 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 [] 19:44:28.853 [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/c3/2d/c32d96a623426da0093715bd184bee671dee3b773171fc41930a3d11b78f04b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:44:34.366 [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/56/9a562f206e5c0f6d47df307f296daa19ae08da2bc0ed82879b8ef292427cfc98.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 19:44:34.367 [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" 19:44:34.367 [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" 19:44:34.369 [info] {"args":{"id":8350},"id":226759,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10837222,"event":"job:stop","queue_time":526069,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:44:34.378 [info] {"args":{"id":8401},"id":226761,"meta":{},"system_time":1768034674378708145,"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"]} 19:44:34.380 [debug] QUERY OK source="media_items" db=0.7ms idle=1934.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] 19:44:34.380 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:44:34.381 [debug] QUERY OK source="sources" db=0.4ms idle=1323.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] 19:44:34.382 [debug] QUERY OK source="media_profiles" db=0.3ms idle=320.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] 19:44:34.383 [debug] QUERY OK source="media_items" db=0.5ms 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 [8401] 19:44:34.385 [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" = ?) [8401] 19:44:34.386 [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] 19:44:34.387 [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 [] 19:44:34.387 [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 [] 19:44:34.388 [debug] Running yt-dlp command for action: get_downloadable_status 19:44:34.390 [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 [] 19:44:34.390 [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 [] 19:44:34.391 [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 [] 19:44:34.391 [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/14/81145c7c48f6d37eafc8deded71606fc0f2392b735374bdc809bde2f7446cd44.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:44:34.963 [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/c3/2d/c32d96a623426da0093715bd184bee671dee3b773171fc41930a3d11b78f04b8.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 19:44:34.963 [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" 19:44:34.964 [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" 19:44:35.244 [info] {"args":{"id":8380},"id":226760,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11433753,"event":"job:stop","queue_time":526069,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:44:35.253 [info] {"args":{"id":8418},"id":226762,"meta":{},"system_time":1768034675252954328,"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"]} 19:44:35.253 [debug] QUERY OK source="media_items" db=0.3ms idle=862.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] 19:44:35.253 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:44:35.255 [debug] QUERY OK source="sources" db=0.9ms queue=0.2ms idle=863.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] 19:44:35.257 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms 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] 19:44:35.259 [debug] QUERY OK source="media_items" db=1.1ms queue=0.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] 19:44:35.261 [debug] QUERY OK source="media_metadata" db=0.4ms 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" = ?) [8418] 19:44:35.262 [debug] QUERY OK source="media_profiles" db=0.5ms idle=8.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] 19:44:35.263 [debug] QUERY OK source="settings" db=0.5ms 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 [] 19:44:35.264 [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 [] 19:44:35.265 [debug] Running yt-dlp command for action: get_downloadable_status 19:44:35.267 [debug] QUERY OK source="settings" db=0.4ms 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 [] 19:44:35.267 [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 [] 19:44:35.268 [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 [] 19:44:35.268 [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/05/1305f32ba34a94cbf2af37b911a7098e728060527710001f0f81f38cfd9330cd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:44:40.061 [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/14/81145c7c48f6d37eafc8deded71606fc0f2392b735374bdc809bde2f7446cd44.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 19:44:40.062 [debug] QUERY OK source="settings" db=0.5ms idle=1617.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:40.062 [debug] QUERY OK source="settings" db=0.5ms idle=1618.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:40.063 [debug] Running yt-dlp command for action: get_downloadable_status 19:44:40.067 [debug] QUERY OK source="settings" db=0.4ms idle=1622.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:40.067 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:44:40.068 [debug] QUERY OK source="settings" db=0.4ms idle=808.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:40.068 [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/d8/68/d868d512a55dd7d55cfcd33644d6df7fed902e586f996e2e57b9378e55ed9464.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:44:42.012 [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/05/1305f32ba34a94cbf2af37b911a7098e728060527710001f0f81f38cfd9330cd.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 19:44:42.014 [debug] QUERY OK source="settings" db=0.7ms idle=747.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:42.014 [debug] QUERY OK source="settings" db=0.3ms idle=569.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:42.015 [debug] Running yt-dlp command for action: get_downloadable_status 19:44:42.016 [debug] QUERY OK source="settings" db=0.1ms idle=572.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:42.017 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=572.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:42.017 [debug] QUERY OK source="settings" db=0.1ms idle=572.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:42.018 [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/8d/96/8d96be98de03975769225f7a567f7baf7bb00285cc2fb57f811524c5832a1106.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:44:46.147 [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/d8/68/d868d512a55dd7d55cfcd33644d6df7fed902e586f996e2e57b9378e55ed9464.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 19:44:46.147 [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" 19:44:46.148 [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" 19:44:46.149 [info] {"args":{"id":8401},"id":226761,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11769660,"event":"job:stop","queue_time":11376153,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:44:47.406 [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/8d/96/8d96be98de03975769225f7a567f7baf7bb00285cc2fb57f811524c5832a1106.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 19:44:47.407 [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" 19:44:47.407 [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" 19:44:47.408 [info] {"args":{"id":8418},"id":226762,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":12154435,"event":"job:stop","queue_time":12250143,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:44:48.409 [info] {"source":"oban","duration":24779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:44:55.319 [info] {"args":{"id":11},"id":226740,"meta":{},"system_time":1768034695319054427,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:44:55.320 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms idle=1875.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] 19:44:55.321 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1014.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:44:55.322 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=877.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] 19:44:55.323 [debug] QUERY OK source="settings" db=0.7ms 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 [] 19:44:55.324 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 19:44:55.325 [debug] QUERY OK source="settings" db=0.3ms queue=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 [] 19:44:55.325 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:44:55.858 [debug] QUERY OK source="media_items" db=4.1ms idle=533.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, "VSW2XDMy1n4", "IAT_Zf2PCL4", "-xT57w8ZS8U", "EdS_OqCQSew", "FwEJK_d8y8c", "X07XF175FSA", "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", ...] 19:44:55.868 [debug] QUERY OK source="media_items" db=8.9ms idle=538.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] 19:44:55.874 [debug] QUERY OK source="tasks" db=0.8ms idle=15.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226764, 11, ~U[2026-01-10 08:44:55Z], ~U[2026-01-10 08:44:55Z]] 19:44:55.876 [info] {"args":{"id":11},"id":226740,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":555550,"event":"job:stop","queue_time":425324,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:45:00.990 [info] {"source":"oban","duration":670,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:45:03.725 [info] GET / 19:45:03.726 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:45:03.727 [debug] QUERY OK source="settings" db=0.3ms idle=1282.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:45:03.727 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=395.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:45:03.728 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=283.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:45:03.759 [debug] QUERY OK source="media_items" db=30.0ms idle=284.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:45:03.763 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms idle=315.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:45:03.764 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=36.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:45:03.765 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=37.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:45:03.766 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=37.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:45:03.772 [debug] QUERY OK source="media_items" db=3.4ms 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)) [] 19:45:03.773 [debug] QUERY OK source="media_items" db=0.5ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:45:03.775 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:45:03.818 [debug] QUERY OK source="media_items" db=35.7ms idle=16.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:45:03.821 [debug] QUERY OK source="media_items" db=2.0ms idle=52.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:45:03.823 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=49.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" IN (?,?)) [27, 5] 19:45:03.830 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=56.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"] 19:45:03.831 [info] Sent 200 in 106ms 19:45:13.368 [info] {"args":{"id":25},"id":226741,"meta":{},"system_time":1768034713368393519,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:45:13.369 [debug] QUERY OK source="sources" db=0.7ms idle=1924.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" = ?) [25] 19:45:13.379 [debug] QUERY OK source="settings" db=8.5ms queue=0.2ms idle=1925.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:45:13.380 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1025.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] 19:45:13.381 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms 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 [] 19:45:13.381 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 19:45:13.382 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms 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 [] 19:45:13.383 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:45:13.721 [debug] QUERY OK source="media_items" db=1.1ms idle=350.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"] 19:45:13.724 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=344.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] 19:45:13.728 [debug] QUERY OK source="tasks" db=0.7ms idle=344.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226765, 25, ~U[2026-01-10 08:45:13Z], ~U[2026-01-10 08:45:13Z]] 19:45:13.729 [info] {"args":{"id":25},"id":226741,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":359867,"event":"job:stop","queue_time":676331,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:45:18.419 [info] {"source":"oban","duration":9180,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:45:32.425 [info] {"args":{"id":2},"id":226742,"meta":{},"system_time":1768034732425573520,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:45:32.426 [debug] QUERY OK source="sources" db=0.3ms idle=981.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] 19:45:32.427 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=982.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:45:32.428 [debug] QUERY OK source="media_profiles" db=0.6ms idle=983.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] 19:45:32.429 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:45:32.429 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 19:45:32.430 [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 [] 19:45:32.430 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:45:33.001 [debug] QUERY OK source="media_items" db=2.6ms idle=572.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, "Usk1j8IT7ww", "eIpWmOMdYMA", "M08XtzkUg2A", "XC32_9oNoeQ", "gVqE98_flmc", "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", ...] 19:45:33.012 [debug] QUERY OK source="media_items" db=8.6ms idle=575.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] 19:45:33.017 [debug] QUERY OK source="tasks" db=0.8ms queue=0.1ms idle=585.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226766, 2, ~U[2026-01-10 08:45:33Z], ~U[2026-01-10 08:45:33Z]] 19:45:33.018 [info] {"args":{"id":2},"id":226742,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":591591,"event":"job:stop","queue_time":458976,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:45:48.440 [info] {"source":"oban","duration":20251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:46:00.696 [info] GET / 19:46:00.697 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:46:00.697 [debug] QUERY OK source="settings" db=0.2ms idle=1190.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:46:00.698 [debug] QUERY OK source="media_profiles" db=0.2ms idle=253.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:46:00.699 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=253.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:46:00.759 [debug] QUERY OK source="media_items" db=59.8ms idle=254.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:46:00.762 [debug] QUERY OK source="media_items" db=3.0ms idle=248.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:46:00.762 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:46:00.763 [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 [] 19:46:00.765 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=66.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:46:00.771 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms 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 (m0."media_filepath" IS NULL)) [] 19:46:00.772 [debug] QUERY OK source="media_items" db=0.6ms idle=9.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] 19:46:00.773 [debug] QUERY OK source="sources" db=0.4ms idle=9.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 (?,?,?)) [12, 15, 6] 19:46:00.811 [debug] QUERY OK source="media_items" db=35.1ms idle=12.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"))) [] 19:46:00.813 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=46.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:46:00.815 [debug] QUERY OK source="sources" db=0.7ms idle=43.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" IN (?,?)) [27, 5] 19:46:00.818 [debug] QUERY OK source="tasks" db=0.9ms idle=44.9ms 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"] 19:46:00.818 [info] Sent 200 in 122ms 19:46:00.993 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:46:01.095 [info] CONNECTED TO Phoenix.LiveView.Socket in 53µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "VRs2GwEqZQQDAC0-DGYSMQsCHyEnVgZ8bUAsb_-Mzpuoe1GDzQgDpeC0", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.suranyami.com/assets/app-ec454b024a27f3bffb6e1a52ff1601c2.css?vsn=d", "1" => "https://pinchflat.suranyami.com/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 19:46:01.126 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "7NwhcuHIypXQiWUuqSxeW3EL", "media_state" => "downloaded"} 19:46:01.132 [debug] QUERY OK source="media_items" db=5.5ms idle=315.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 (NOT (m0."media_filepath" IS NULL)) [] 19:46:01.134 [debug] QUERY OK source="media_items" db=1.8ms idle=318.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] 19:46:01.135 [debug] QUERY OK source="sources" db=0.9ms idle=319.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 (?,?,?)) [12, 15, 6] 19:46:01.136 [debug] Replied in 10ms 19:46:01.140 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "7NwhcuHIypXQiWUuqSxeW3EL", "media_state" => "pending"} 19:46:01.158 [info] GET /apple-touch-icon-precomposed.png 19:46:01.159 [debug] QUERY OK source="settings" db=0.3ms idle=165.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:46:01.159 [debug] QUERY OK source="settings" db=0.3ms idle=27.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:46:01.160 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:46:01.160 [error] #PID<0.50608.0> running PinchflatWeb.Endpoint (connection #PID<0.50599.0>, stream id 5) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /apple-touch-icon-precomposed.png ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /apple-touch-icon-precomposed (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50599.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/apple-touch-icon-precomposed.png", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 32850}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "host" => "pinchflat.suranyami.com", "priority" => "u=3", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Safari", "via" => "2.0 Caddy", "x-forwarded-for" => "182.239.136.192", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 5, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50608.0>, params: %{}, path_info: ["apple-touch-icon-precomposed"], 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, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"host", "pinchflat.suranyami.com"}, {"priority", "u=3"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Safari"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "182.239.136.192"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/apple-touch-icon-precomposed.png", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlSP3Fjpu_ra4cADCSC"} ], 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.50599.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/apple-touch-icon-precomposed.png", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 32850}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "host" => "pinchflat.suranyami.com", "priority" => "u=3", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Safari", "via" => "2.0 Caddy", "x-forwarded-for" => "182.239.136.192", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 5, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /apple-touch-icon-precomposed (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50599.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/apple-touch-icon-precomposed.png", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 32850}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "host" => "pinchflat.suranyami.com", "priority" => "u=3", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Safari", "via" => "2.0 Caddy", "x-forwarded-for" => "182.239.136.192", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 5, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50608.0>, params: %{}, path_info: ["apple-touch-icon-precomposed"], 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, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"host", "pinchflat.suranyami.com"}, {"priority", "u=3"}, {"user-agent", (truncated) 19:46:01.191 [info] GET /apple-touch-icon.png 19:46:01.192 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:46:01.193 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:46:01.193 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:46:01.194 [error] #PID<0.50609.0> running PinchflatWeb.Endpoint (connection #PID<0.50599.0>, stream id 6) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /apple-touch-icon.png ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /apple-touch-icon (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50599.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/apple-touch-icon.png", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 32850}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "host" => "pinchflat.suranyami.com", "priority" => "u=3", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Safari", "via" => "2.0 Caddy", "x-forwarded-for" => "182.239.136.192", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 6, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50609.0>, params: %{}, path_info: ["apple-touch-icon"], 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, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"host", "pinchflat.suranyami.com"}, {"priority", "u=3"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Safari"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "182.239.136.192"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/apple-touch-icon.png", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlSP3NdzDsvnQwADCSi"} ], 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.50599.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/apple-touch-icon.png", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 32850}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "host" => "pinchflat.suranyami.com", "priority" => "u=3", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Safari", "via" => "2.0 Caddy", "x-forwarded-for" => "182.239.136.192", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 6, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /apple-touch-icon (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50599.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/apple-touch-icon.png", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 32850}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "host" => "pinchflat.suranyami.com", "priority" => "u=3", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Safari", "via" => "2.0 Caddy", "x-forwarded-for" => "182.239.136.192", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 6, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50609.0>, params: %{}, path_info: ["apple-touch-icon"], 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, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"host", "pinchflat.suranyami.com"}, {"priority", "u=3"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Safari" (truncated) 19:46:01.211 [debug] QUERY OK source="media_items" db=69.8ms idle=323.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"))) [] 19:46:01.214 [debug] QUERY OK source="media_items" db=2.5ms idle=52.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:46:01.215 [debug] QUERY OK source="sources" db=0.4ms idle=55.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] 19:46:01.215 [debug] Replied in 75ms 19:46:01.220 [debug] MOUNT Pinchflat.Pages.JobTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "7NwhcuHIypXQiWUuqSxeW3EL"} 19:46:01.222 [debug] QUERY OK source="tasks" db=0.6ms idle=29.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"] 19:46:01.222 [debug] Replied in 2ms 19:46:04.063 [info] GET / 19:46:04.063 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:46:04.064 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=1619.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:46:04.065 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=1620.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:46:04.066 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1621.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:46:04.072 [debug] QUERY OK source="media_items" db=5.7ms queue=0.1ms idle=1549.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:46:04.075 [debug] QUERY OK source="media_items" db=2.1ms queue=0.1ms idle=552.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:46:04.076 [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 [] 19:46:04.077 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:46:04.078 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:46:04.082 [debug] QUERY OK source="media_items" db=1.6ms 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)) [] 19:46:04.084 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=7.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:46:04.085 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms 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" IN (?,?,?)) [12, 15, 6] 19:46:04.103 [debug] QUERY OK source="media_items" db=11.3ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:46:04.106 [debug] QUERY OK source="media_items" db=1.7ms queue=0.2ms idle=25.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] 19:46:04.108 [debug] QUERY OK source="sources" db=0.5ms idle=25.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] 19:46:04.114 [debug] QUERY OK source="tasks" db=0.3ms idle=29.1ms 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"] 19:46:04.116 [info] Sent 200 in 52ms 19:46:18.464 [info] {"source":"oban","duration":23039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:46:37.653 [info] {"args":{"id":1},"id":226743,"meta":{},"system_time":1768034797652999724,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:46:37.658 [debug] QUERY OK source="sources" db=4.0ms queue=0.1ms idle=209.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] 19:46:37.659 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=213.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:46:37.667 [debug] QUERY OK source="media_profiles" db=7.2ms queue=0.1ms idle=214.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] 19:46:37.674 [debug] QUERY OK source="settings" db=7.0ms idle=23.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:46:37.674 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 19:46:37.675 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms 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 [] 19:46:37.675 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:46:38.027 [debug] QUERY OK source="media_items" db=4.1ms idle=364.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, "W4asNKhu7Nk", "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", ...] 19:46:38.038 [debug] QUERY OK source="media_items" db=5.8ms 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")))) [1] 19:46:38.043 [debug] QUERY OK source="tasks" db=0.9ms idle=366.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226767, 1, ~U[2026-01-10 08:46:38Z], ~U[2026-01-10 08:46:38Z]] 19:46:38.044 [info] {"args":{"id":1},"id":226743,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":390423,"event":"job:stop","queue_time":584210,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:46:46.680 [info] {"args":{"id":19},"id":226744,"meta":{},"system_time":1768034806679822467,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:46:46.681 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=1235.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] 19:46:46.682 [debug] QUERY OK source="settings" db=0.6ms idle=1236.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:46:46.683 [debug] QUERY OK source="media_profiles" db=0.8ms 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] 19:46:46.683 [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 [] 19:46:46.683 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 19:46:46.684 [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 [] 19:46:46.684 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:46:47.025 [debug] QUERY OK source="media_items" db=2.9ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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"] 19:46:47.028 [debug] QUERY OK source="media_items" db=1.7ms idle=344.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] 19:46:47.032 [debug] QUERY OK source="tasks" db=0.9ms idle=347.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226768, 19, ~U[2026-01-10 08:46:47Z], ~U[2026-01-10 08:46:47Z]] 19:46:47.033 [info] {"args":{"id":19},"id":226744,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":353047,"event":"job:stop","queue_time":678251,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:46:48.476 [info] {"source":"oban","duration":10733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:47:00.994 [info] {"source":"oban","duration":430,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:47:04.291 [info] GET / 19:47:04.291 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:47:04.292 [debug] QUERY OK source="settings" db=0.3ms idle=1847.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:47:04.293 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1848.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:47:04.293 [debug] QUERY OK source="sources" db=0.3ms idle=1848.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:47:04.357 [debug] QUERY OK source="media_items" db=63.2ms idle=1578.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:47:04.362 [debug] QUERY OK source="media_items" db=5.0ms idle=640.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:47:04.363 [debug] QUERY OK source="settings" db=0.4ms 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 [] 19:47:04.364 [debug] QUERY OK source="settings" db=0.5ms idle=70.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:47:04.364 [debug] QUERY OK source="settings" db=0.2ms idle=70.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:47:04.369 [debug] QUERY OK source="media_items" db=4.1ms idle=8.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 (m0."media_filepath" IS NULL)) [] 19:47:04.370 [debug] QUERY OK source="media_items" db=0.6ms idle=7.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:47:04.371 [debug] QUERY OK source="sources" db=0.5ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:47:04.444 [debug] QUERY OK source="media_items" db=69.2ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:47:04.446 [debug] QUERY OK source="media_items" db=1.8ms idle=79.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:47:04.447 [debug] QUERY OK source="sources" db=0.3ms idle=76.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 (?,?)) [27, 5] 19:47:04.450 [debug] QUERY OK source="tasks" db=0.3ms idle=78.9ms 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"] 19:47:04.451 [info] Sent 200 in 159ms 19:47:18.487 [info] {"source":"oban","duration":9745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:47:38.831 [info] {"args":{"id":26},"id":226745,"meta":{},"system_time":1768034858831055442,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:47:38.832 [debug] QUERY OK source="sources" db=0.3ms idle=387.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" = ?) [26] 19:47:38.835 [debug] QUERY OK source="settings" db=2.8ms 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 [] 19:47:38.837 [debug] QUERY OK source="media_profiles" db=1.5ms queue=0.1ms idle=391.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] 19:47:38.844 [debug] QUERY OK source="settings" db=6.6ms queue=0.1ms 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 [] 19:47:38.844 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 19:47:38.845 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:47:38.845 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:47:39.383 [debug] QUERY OK source="media_items" db=5.7ms idle=545.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, "UO8_-B-383w", "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", ...] 19:47:39.396 [debug] QUERY OK source="media_items" db=8.9ms queue=0.1ms idle=552.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] 19:47:39.402 [debug] QUERY OK source="tasks" db=1.1ms idle=556.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226769, 26, ~U[2026-01-10 08:47:39Z], ~U[2026-01-10 08:47:39Z]] 19:47:39.404 [info] {"args":{"id":26},"id":226745,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":571894,"event":"job:stop","queue_time":528101,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:47:48.496 [info] {"source":"oban","duration":7232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:47:50.878 [info] {"args":{"id":15},"id":226746,"meta":{},"system_time":1768034870877972508,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:47:50.879 [debug] QUERY OK source="sources" db=0.8ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 19:47:50.881 [debug] QUERY OK source="settings" db=1.2ms idle=435.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:47:50.882 [debug] QUERY OK source="media_profiles" db=0.7ms idle=436.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] 19:47:50.883 [debug] QUERY OK source="settings" db=0.5ms 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 [] 19:47:50.883 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 19:47:50.884 [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 [] 19:47:50.884 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:47:51.339 [debug] QUERY OK source="media_items" db=4.1ms idle=455.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "OCnm1p7J38Q", "javP2Zg24jM", "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", ...] 19:47:51.350 [debug] QUERY OK source="media_items" db=8.6ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:47:51.354 [debug] QUERY OK source="tasks" db=0.8ms idle=469.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226770, 15, ~U[2026-01-10 08:47:51Z], ~U[2026-01-10 08:47:51Z]] 19:47:51.355 [info] {"args":{"id":15},"id":226746,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":476468,"event":"job:stop","queue_time":542687,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:48:00.995 [info] {"source":"oban","duration":518,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:48:04.637 [info] GET / 19:48:04.638 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:48:04.639 [debug] QUERY OK source="settings" db=0.9ms idle=720.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:48:04.640 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=195.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:48:04.641 [debug] QUERY OK source="sources" db=0.3ms idle=196.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:48:04.699 [debug] QUERY OK source="media_items" db=58.0ms idle=197.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:48:04.703 [debug] QUERY OK source="media_items" db=3.6ms idle=255.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:48:04.704 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=64.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:48:04.705 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=64.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:48:04.706 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=65.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:48:04.712 [debug] QUERY OK source="media_items" db=3.7ms idle=8.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 (NOT (m0."media_filepath" IS NULL)) [] 19:48:04.713 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=8.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:48:04.715 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=9.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" IN (?,?,?)) [12, 15, 6] 19:48:04.756 [debug] QUERY OK source="media_items" db=35.0ms idle=15.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"))) [] 19:48:04.759 [debug] QUERY OK source="media_items" db=2.1ms queue=0.2ms idle=50.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:48:04.761 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=48.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] 19:48:04.767 [debug] QUERY OK source="tasks" db=0.7ms idle=53.6ms 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"] 19:48:04.770 [info] Sent 200 in 132ms 19:48:14.965 [info] {"args":{"id":3},"id":226747,"meta":{},"system_time":1768034894965297673,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:48:14.966 [debug] QUERY OK source="sources" db=0.5ms idle=521.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] 19:48:14.969 [debug] QUERY OK source="settings" db=3.2ms idle=522.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:48:14.970 [debug] QUERY OK source="media_profiles" db=0.7ms 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] 19:48:14.971 [debug] QUERY OK source="settings" db=0.4ms idle=19.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:48:14.971 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 19:48:14.972 [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 [] 19:48:14.972 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:48:15.459 [debug] QUERY OK source="media_items" db=2.8ms 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."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "rzQeUM-lMUY", "BkUHm95UvCw", "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", ...] 19:48:15.467 [debug] QUERY OK source="media_items" db=3.3ms idle=494.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] 19:48:15.471 [debug] QUERY OK source="tasks" db=0.7ms idle=497.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226771, 3, ~U[2026-01-10 08:48:15Z], ~U[2026-01-10 08:48:15Z]] 19:48:15.472 [info] {"args":{"id":3},"id":226747,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":506260,"event":"job:stop","queue_time":565671,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:48:18.507 [info] {"source":"oban","duration":10520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:48:34.012 [info] {"args":{"id":22},"id":226748,"meta":{},"system_time":1768034914012474899,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:48:34.013 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms 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" = ?) [22] 19:48:34.015 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=569.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:48:34.016 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=571.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] 19:48:34.017 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:48:34.017 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 19:48:34.018 [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 [] 19:48:34.018 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:48:34.326 [debug] QUERY OK source="media_items" db=2.1ms queue=0.1ms idle=309.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"] 19:48:34.329 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms 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 [] 19:48:34.330 [debug] QUERY OK source="settings" db=0.4ms idle=313.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:48:34.330 [debug] Running yt-dlp command for action: get_media_attributes 19:48:34.332 [debug] QUERY OK source="settings" db=0.3ms idle=314.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:48:34.332 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:48:34.332 [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 [] 19:48:34.333 [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/56/0156ed2ca64d164f71dba1ae7eb4aaf209a9e099d96513c7fb79aea9c2d8b314.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:48:39.070 [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/56/0156ed2ca64d164f71dba1ae7eb4aaf209a9e099d96513c7fb79aea9c2d8b314.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 19:48:39.070 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 19:48:39.072 [debug] QUERY OK source="media_items" db=1.2ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:48:39.078 [debug] QUERY OK source="tasks" db=1.1ms idle=1061.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226772, 22, ~U[2026-01-10 08:48:39Z], ~U[2026-01-10 08:48:39Z]] 19:48:39.080 [info] {"args":{"id":22},"id":226748,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5066249,"event":"job:stop","queue_time":968405,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:48:48.529 [info] {"source":"oban","duration":20287,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:49:00.998 [info] {"source":"oban","duration":515,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:49:04.915 [info] GET / 19:49:04.915 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:49:04.917 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=831.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:49:04.918 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=473.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:49:04.920 [debug] QUERY OK source="sources" db=0.8ms queue=0.5ms idle=473.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:49:04.980 [debug] QUERY OK source="media_items" db=60.2ms idle=475.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:49:04.984 [debug] QUERY OK source="media_items" db=3.7ms idle=536.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:49:04.985 [debug] QUERY OK source="settings" db=0.3ms idle=68.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:49:04.986 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=68.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:49:04.990 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=69.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:49:05.001 [debug] QUERY OK source="media_items" db=9.2ms idle=11.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)) [] 19:49:05.003 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=17.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:49:05.005 [debug] QUERY OK source="sources" db=0.6ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:49:05.047 [debug] QUERY OK source="media_items" db=35.0ms queue=0.2ms idle=25.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:49:05.050 [debug] QUERY OK source="media_items" db=1.8ms idle=58.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:49:05.052 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=49.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] 19:49:05.057 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=53.6ms 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"] 19:49:05.059 [info] Sent 200 in 144ms 19:49:06.100 [info] {"args":{"id":18},"id":226749,"meta":{},"system_time":1768034946099860009,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:49:06.104 [debug] QUERY OK source="sources" db=3.4ms queue=0.1ms idle=1048.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] 19:49:06.105 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=1046.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:49:06.106 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=1017.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] 19:49:06.111 [debug] QUERY OK source="settings" db=3.7ms queue=0.1ms idle=14.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:49:06.111 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 19:49:06.112 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:49:06.112 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:49:06.545 [debug] QUERY OK source="media_items" db=3.0ms idle=438.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, "XCGRhxHrjWg", "fyWYr4PukJY", "-w4HeclDfgE", "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", ...] 19:49:06.552 [debug] QUERY OK source="media_items" db=3.3ms 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")))) [18] 19:49:06.556 [debug] QUERY OK source="tasks" db=0.5ms idle=443.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226773, 18, ~U[2026-01-10 08:49:06Z], ~U[2026-01-10 08:49:06Z]] 19:49:06.557 [info] {"args":{"id":18},"id":226749,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":456299,"event":"job:stop","queue_time":514435,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:49:18.541 [info] {"source":"oban","duration":11019,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:49:48.564 [info] {"source":"oban","duration":22565,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:50:00.999 [info] {"source":"oban","duration":590,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:50:03.284 [info] {"args":{"id":23},"id":226750,"meta":{},"system_time":1768035003284280493,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:50:03.286 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=840.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] 19:50:03.287 [debug] QUERY OK source="settings" db=0.5ms idle=841.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:03.287 [debug] QUERY OK source="media_profiles" db=0.5ms idle=842.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] 19:50:03.289 [debug] QUERY OK source="settings" db=0.9ms 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 [] 19:50:03.289 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 19:50:03.289 [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 [] 19:50:03.289 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:50:03.619 [debug] QUERY OK source="media_items" db=3.0ms idle=330.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"] 19:50:03.623 [debug] QUERY OK source="media_items" db=1.8ms idle=334.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")))) [23] 19:50:03.627 [debug] QUERY OK source="tasks" db=1.0ms idle=336.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226774, 23, ~U[2026-01-10 08:50:03Z], ~U[2026-01-10 08:50:03Z]] 19:50:03.628 [info] {"args":{"id":23},"id":226750,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":343384,"event":"job:stop","queue_time":699050,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:50:06.418 [info] GET / 19:50:06.419 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:50:06.420 [debug] QUERY OK source="settings" db=0.5ms idle=975.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:06.420 [debug] QUERY OK source="media_profiles" db=0.2ms idle=975.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:50:06.420 [debug] QUERY OK source="sources" db=0.2ms idle=976.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:50:06.480 [debug] QUERY OK source="media_items" db=59.7ms idle=976.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:50:06.484 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms idle=193.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:50:06.485 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms 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 [] 19:50:06.485 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=64.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:06.486 [debug] QUERY OK source="settings" db=0.2ms idle=65.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:06.491 [debug] QUERY OK source="media_items" db=3.1ms 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 (NOT (m0."media_filepath" IS NULL)) [] 19:50:06.491 [debug] QUERY OK source="media_items" db=0.6ms 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] 19:50:06.492 [debug] QUERY OK source="sources" db=0.3ms idle=7.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 (?,?,?)) [12, 15, 6] 19:50:06.529 [debug] QUERY OK source="media_items" db=34.0ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:50:06.532 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=43.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] 19:50:06.533 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=41.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] 19:50:06.536 [debug] QUERY OK source="tasks" db=0.3ms idle=44.1ms 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"] 19:50:06.537 [info] Sent 200 in 118ms 19:50:18.575 [info] {"source":"oban","duration":10200,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:50:30.348 [info] {"args":{"id":10},"id":226751,"meta":{},"system_time":1768035030348471019,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:50:30.352 [debug] QUERY OK source="sources" db=3.3ms idle=1904.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] 19:50:30.362 [debug] QUERY OK source="settings" db=9.3ms idle=1908.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:30.363 [debug] QUERY OK source="media_profiles" db=1.2ms idle=1023.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] 19:50:30.364 [debug] QUERY OK source="settings" db=0.6ms idle=22.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:30.364 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 19:50:30.365 [debug] QUERY OK source="settings" db=0.3ms idle=16.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:30.365 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:50:30.723 [debug] QUERY OK source="media_items" db=3.5ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "g0z7tR6KdIE", "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", ...] 19:50:30.726 [debug] QUERY OK source="settings" db=0.4ms idle=363.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:30.726 [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 [] 19:50:30.726 [debug] Running yt-dlp command for action: get_media_attributes 19:50:30.728 [debug] QUERY OK source="settings" db=0.5ms idle=363.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:30.729 [debug] QUERY OK source="settings" db=0.2ms idle=363.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:50:30.729 [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 [] 19:50:30.729 [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/d1/54/d154709e83b9d9e0cb2eefd34042572dcb852ac96603b9fe47e0df75b0f4d44a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:50:35.759 [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/d1/54/d154709e83b9d9e0cb2eefd34042572dcb852ac96603b9fe47e0df75b0f4d44a.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. 19:50:35.759 [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} 19:50:35.761 [debug] QUERY OK source="media_items" db=1.4ms queue=0.1ms idle=1315.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")))) [10] 19:50:35.766 [debug] QUERY OK source="tasks" db=0.8ms idle=1320.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226775, 10, ~U[2026-01-10 08:50:35Z], ~U[2026-01-10 08:50:35Z]] 19:50:35.767 [info] {"args":{"id":10},"id":226751,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5417931,"event":"job:stop","queue_time":945704,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:50:48.587 [info] {"source":"oban","duration":11107,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:51:00.001 [info] {"source":"oban","duration":726,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:51:03.445 [info] {"args":{"id":6},"id":226752,"meta":{},"system_time":1768035063445616448,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:51:03.447 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=9.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" = ?) [6] 19:51:03.448 [debug] QUERY OK source="settings" db=1.0ms 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 [] 19:51:03.449 [debug] QUERY OK source="media_profiles" db=0.4ms 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] 19:51:03.450 [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 [] 19:51:03.450 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 19:51:03.451 [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 [] 19:51:03.451 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:51:03.884 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms idle=433.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "cIrfWaWIByQ", "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", ...] 19:51:03.890 [debug] QUERY OK source="media_items" db=2.4ms queue=0.1ms idle=439.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] 19:51:03.894 [debug] QUERY OK source="tasks" db=0.5ms idle=442.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226776, 6, ~U[2026-01-10 08:51:03Z], ~U[2026-01-10 08:51:03Z]] 19:51:03.896 [info] {"args":{"id":6},"id":226752,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":448874,"event":"job:stop","queue_time":551443,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:51:05.451 [info] {"args":{"id":24},"id":226753,"meta":{},"system_time":1768035065450836555,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:51:05.452 [debug] QUERY OK source="sources" db=0.4ms queue=0.2ms 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" = ?) [24] 19:51:05.453 [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 [] 19:51:05.454 [debug] QUERY OK source="media_profiles" db=0.3ms idle=9.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] 19:51:05.455 [debug] QUERY OK source="settings" db=0.2ms queue=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 [] 19:51:05.455 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 19:51:05.456 [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 [] 19:51:05.456 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:51:05.803 [debug] QUERY OK source="media_items" db=3.4ms queue=0.1ms idle=347.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", ...] 19:51:05.809 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=355.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] 19:51:05.813 [debug] QUERY OK source="tasks" db=0.5ms idle=356.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226777, 24, ~U[2026-01-10 08:51:05Z], ~U[2026-01-10 08:51:05Z]] 19:51:05.814 [info] {"args":{"id":24},"id":226753,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":363024,"event":"job:stop","queue_time":667108,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:51:06.672 [info] GET / 19:51:06.672 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:51:06.673 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=859.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:51:06.674 [debug] QUERY OK source="media_profiles" db=0.3ms idle=860.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:51:06.675 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=859.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:51:06.704 [debug] QUERY OK source="media_items" db=29.0ms queue=0.1ms idle=852.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:51:06.708 [debug] QUERY OK source="media_items" db=3.4ms queue=0.2ms idle=259.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:51:06.710 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=36.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:51:06.711 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=36.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:51:06.713 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=37.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:51:06.719 [debug] QUERY OK source="media_items" db=3.5ms 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 (NOT (m0."media_filepath" IS NULL)) [] 19:51:06.720 [debug] QUERY OK source="media_items" db=0.7ms 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 INNER 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] 19:51:06.722 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=11.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 (?,?,?)) [12, 15, 6] 19:51:06.765 [debug] QUERY OK source="media_items" db=36.4ms idle=18.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:51:06.768 [debug] QUERY OK source="media_items" db=1.8ms queue=0.1ms idle=52.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:51:06.770 [debug] QUERY OK source="sources" db=0.6ms idle=49.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" IN (?,?)) [27, 5] 19:51:06.776 [debug] QUERY OK source="tasks" db=0.4ms idle=55.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"] 19:51:06.778 [info] Sent 200 in 106ms 19:51:18.612 [info] {"source":"oban","duration":24264,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:51:48.623 [info] {"source":"oban","duration":10426,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:52:00.003 [info] {"source":"oban","duration":664,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:52:06.938 [info] GET / 19:52:06.938 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:52:06.939 [debug] QUERY OK source="settings" db=0.2ms idle=1329.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:52:06.939 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=494.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:52:06.940 [debug] QUERY OK source="sources" db=0.3ms idle=495.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:52:07.003 [debug] QUERY OK source="media_items" db=62.8ms idle=495.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:52:07.005 [debug] QUERY OK source="media_items" db=1.8ms queue=0.1ms idle=391.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:52:07.006 [debug] QUERY OK source="settings" db=0.2ms idle=66.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:52:07.006 [debug] QUERY OK source="settings" db=0.1ms idle=66.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:52:07.007 [debug] QUERY OK source="settings" db=0.1ms idle=66.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:52:07.012 [debug] QUERY OK source="media_items" db=3.9ms 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 (NOT (m0."media_filepath" IS NULL)) [] 19:52:07.012 [debug] QUERY OK source="media_items" db=0.5ms idle=6.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:52:07.013 [debug] QUERY OK source="sources" db=0.3ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:52:07.053 [debug] QUERY OK source="media_items" db=37.0ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:52:07.055 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=46.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:52:07.056 [debug] QUERY OK source="sources" db=0.3ms 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" IN (?,?)) [27, 5] 19:52:07.059 [debug] QUERY OK source="tasks" db=0.3ms idle=46.2ms 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"] 19:52:07.060 [info] Sent 200 in 122ms 19:52:18.631 [info] {"source":"oban","duration":6938,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:52:46.750 [info] {"args":{"id":21},"id":226754,"meta":{},"system_time":1768035166750688664,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:52:46.754 [debug] QUERY OK source="sources" db=3.4ms idle=306.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] 19:52:46.759 [debug] QUERY OK source="settings" db=4.0ms queue=0.2ms idle=310.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:52:46.761 [debug] QUERY OK source="media_profiles" db=1.1ms queue=0.1ms idle=315.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] 19:52:46.766 [debug] QUERY OK source="settings" db=4.2ms idle=25.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:52:46.766 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 19:52:46.767 [debug] QUERY OK source="settings" db=0.3ms idle=16.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:52:46.767 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:52:47.138 [debug] QUERY OK source="media_items" db=3.4ms queue=0.1ms idle=379.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, "9t1DPHAoHyw", "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", ...] 19:52:47.146 [debug] QUERY OK source="media_items" db=3.9ms 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")))) [21] 19:52:47.149 [debug] QUERY OK source="tasks" db=0.6ms idle=381.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226778, 21, ~U[2026-01-10 08:52:47Z], ~U[2026-01-10 08:52:47Z]] 19:52:47.149 [info] {"args":{"id":21},"id":226754,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":398559,"event":"job:stop","queue_time":349126,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:52:48.643 [info] {"source":"oban","duration":10723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:52:57.783 [info] {"args":{"id":17},"id":226755,"meta":{},"system_time":1768035177783260665,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:52:57.784 [debug] QUERY OK source="sources" db=0.4ms idle=1339.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] 19:52:57.784 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1340.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:52:57.786 [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] 19:52:57.786 [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 [] 19:52:57.786 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 19:52:57.787 [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 [] 19:52:57.787 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:52:58.236 [debug] QUERY OK source="media_items" db=2.4ms idle=449.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "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", "e3XOdq86shM", ...] 19:52:58.242 [debug] QUERY OK source="media_items" db=3.1ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:52:58.245 [debug] QUERY OK source="tasks" db=0.5ms idle=457.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226779, 17, ~U[2026-01-10 08:52:58Z], ~U[2026-01-10 08:52:58Z]] 19:52:58.245 [info] {"args":{"id":17},"id":226755,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":461812,"event":"job:stop","queue_time":613527,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:53:00.005 [info] {"source":"oban","duration":623,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:53:07.220 [info] GET / 19:53:07.220 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:53:07.221 [debug] QUERY OK source="settings" db=0.4ms idle=1776.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:53:07.221 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1776.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:53:07.222 [debug] QUERY OK source="sources" db=0.4ms idle=1777.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:53:07.283 [debug] QUERY OK source="media_items" db=60.8ms idle=1431.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:53:07.288 [debug] QUERY OK source="media_items" db=4.9ms queue=0.1ms idle=490.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:53:07.289 [debug] QUERY OK source="settings" db=0.4ms idle=67.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:53:07.289 [debug] QUERY OK source="settings" db=0.5ms idle=67.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:53:07.290 [debug] QUERY OK source="settings" db=0.2ms idle=68.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:53:07.294 [debug] QUERY OK source="media_items" db=3.3ms 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)) [] 19:53:07.295 [debug] QUERY OK source="media_items" db=0.8ms 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] 19:53:07.297 [debug] QUERY OK source="sources" db=0.7ms idle=7.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 (?,?,?)) [12, 15, 6] 19:53:07.343 [debug] QUERY OK source="media_items" db=36.8ms idle=15.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:53:07.347 [debug] QUERY OK source="media_items" db=3.0ms queue=0.2ms idle=52.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] 19:53:07.348 [debug] QUERY OK source="sources" db=0.5ms idle=53.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] 19:53:07.350 [debug] QUERY OK source="tasks" db=0.3ms idle=54.6ms 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"] 19:53:07.351 [info] Sent 200 in 131ms 19:53:18.654 [info] {"source":"oban","duration":10439,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:53:47.924 [info] {"args":{"id":16},"id":226756,"meta":{},"system_time":1768035227923885389,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:53:47.931 [debug] QUERY OK source="sources" db=7.2ms idle=1479.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] 19:53:47.933 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=1487.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:53:47.934 [debug] QUERY OK source="media_profiles" db=1.0ms idle=1022.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] 19:53:47.940 [debug] QUERY OK source="settings" db=5.4ms idle=18.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:53:47.940 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 19:53:47.940 [debug] QUERY OK source="settings" db=0.3ms idle=16.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:53:47.941 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:53:48.314 [debug] QUERY OK source="media_items" db=5.2ms idle=376.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, "9T4hx4KjyQ8", "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", ...] 19:53:48.321 [debug] QUERY OK source="media_items" db=4.6ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:53:48.325 [debug] QUERY OK source="tasks" db=1.1ms idle=383.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226780, 16, ~U[2026-01-10 08:53:48Z], ~U[2026-01-10 08:53:48Z]] 19:53:48.327 [info] {"args":{"id":16},"id":226756,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":402023,"event":"job:stop","queue_time":582205,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:53:48.677 [info] {"source":"oban","duration":22447,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:53:48.931 [info] {"args":{"id":9},"id":226757,"meta":{},"system_time":1768035228931338571,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:53:48.932 [debug] QUERY OK source="sources" db=1.1ms idle=604.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" = ?) [9] 19:53:48.934 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=597.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:53:48.935 [debug] QUERY OK source="media_profiles" db=1.3ms idle=256.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] 19:53:48.936 [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 [] 19:53:48.936 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 19:53:48.937 [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 [] 19:53:48.937 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:53:49.341 [debug] QUERY OK source="media_items" db=3.8ms 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 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "16b4SEeZ45I", "el_J4DE8WnA", "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", ...] 19:53:49.349 [debug] QUERY OK source="media_items" db=6.3ms idle=409.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] 19:53:49.354 [debug] QUERY OK source="tasks" db=0.9ms idle=415.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226781, 9, ~U[2026-01-10 08:53:49Z], ~U[2026-01-10 08:53:49Z]] 19:53:49.355 [info] {"args":{"id":9},"id":226757,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":422869,"event":"job:stop","queue_time":556703,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:54:00.006 [info] {"source":"oban","duration":611,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:54:07.525 [info] GET / 19:54:07.525 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:54:07.526 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1081.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:07.527 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=1082.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:54:07.528 [debug] QUERY OK source="sources" db=0.5ms idle=1082.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:54:07.561 [debug] QUERY OK source="media_items" db=32.3ms idle=548.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:54:07.565 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=117.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:54:07.565 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=39.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:07.566 [debug] QUERY OK source="settings" db=0.2ms idle=38.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:07.568 [debug] QUERY OK source="settings" db=0.8ms idle=38.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:07.582 [debug] QUERY OK source="media_items" db=11.0ms queue=0.1ms 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 (m0."media_filepath" IS NULL)) [] 19:54:07.584 [debug] QUERY OK source="media_items" db=1.9ms queue=0.1ms idle=17.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] 19:54:07.585 [debug] QUERY OK source="sources" db=0.3ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:54:07.626 [debug] QUERY OK source="media_items" db=36.9ms idle=22.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"))) [] 19:54:07.628 [debug] QUERY OK source="media_items" db=1.8ms idle=58.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:54:07.629 [debug] QUERY OK source="sources" db=0.3ms idle=47.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] 19:54:07.637 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=51.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"] 19:54:07.639 [info] Sent 200 in 114ms 19:54:14.007 [info] {"args":{"id":20},"id":226758,"meta":{},"system_time":1768035254006814373,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:54:14.007 [debug] QUERY OK source="sources" db=0.4ms idle=562.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] 19:54:14.010 [debug] QUERY OK source="settings" db=2.8ms idle=563.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:14.011 [debug] QUERY OK source="media_profiles" db=0.3ms idle=566.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] 19:54:14.014 [debug] QUERY OK source="settings" db=2.9ms 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 [] 19:54:14.014 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 19:54:14.015 [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 [] 19:54:14.015 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:54:14.442 [debug] QUERY OK source="media_items" db=4.6ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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", ...] 19:54:14.454 [debug] QUERY OK source="media_items" db=8.7ms idle=434.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] 19:54:14.457 [debug] QUERY OK source="tasks" db=0.6ms idle=441.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226782, 20, ~U[2026-01-10 08:54:14Z], ~U[2026-01-10 08:54:14Z]] 19:54:14.458 [info] {"args":{"id":20},"id":226758,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":450478,"event":"job:stop","queue_time":512580,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:54:18.689 [info] {"source":"oban","duration":10845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:54:24.035 [info] {"args":{"id":7},"id":226763,"meta":{},"system_time":1768035264034972531,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:54:24.036 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1590.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" = ?) [7] 19:54:24.036 [debug] QUERY OK source="settings" db=0.2ms idle=1014.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:24.037 [debug] QUERY OK source="media_profiles" db=0.3ms idle=592.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] 19:54:24.038 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:54:24.038 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 19:54:24.038 [debug] QUERY OK source="settings" db=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 [] 19:54:24.039 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:54:24.480 [debug] QUERY OK source="media_items" db=3.3ms queue=0.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "EzCiEv1IqiA", "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", ...] 19:54:24.487 [debug] QUERY OK source="media_items" db=4.7ms idle=446.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] 19:54:24.491 [debug] QUERY OK source="tasks" db=0.5ms idle=452.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226783, 8350, ~U[2026-01-10 08:54:24Z], ~U[2026-01-10 08:54:24Z]] 19:54:24.495 [debug] QUERY OK source="tasks" db=0.5ms idle=4.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226784, 8380, ~U[2026-01-10 08:54:24Z], ~U[2026-01-10 08:54:24Z]] 19:54:24.502 [info] {"args":{"id":8350},"id":226783,"meta":{},"system_time":1768035264502027436,"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"]} 19:54:24.503 [info] {"args":{"id":8380},"id":226784,"meta":{},"system_time":1768035264502175321,"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"]} 19:54:24.504 [debug] QUERY OK source="media_items" db=1.0ms queue=0.2ms idle=8.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" = ?) [8350] 19:54:24.504 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:54:24.505 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms 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" = ?) [8380] 19:54:24.505 [debug] QUERY OK source="tasks" db=1.5ms queue=0.3ms idle=7.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226785, 8401, ~U[2026-01-10 08:54:24Z], ~U[2026-01-10 08:54:24Z]] 19:54:24.505 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:54:24.506 [debug] QUERY OK source="sources" db=1.0ms queue=0.2ms idle=3.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] 19:54:24.507 [debug] QUERY OK source="sources" db=0.8ms queue=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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 19:54:24.507 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.2ms 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] 19:54:24.508 [debug] QUERY OK source="media_profiles" db=0.8ms 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] 19:54:24.510 [debug] QUERY OK source="media_items" db=2.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] 19:54:24.512 [debug] QUERY OK source="media_items" db=1.6ms queue=0.3ms idle=3.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] 19:54:24.513 [debug] QUERY OK source="media_metadata" db=0.6ms idle=4.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" = ?) [8350] 19:54:24.514 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms 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] 19:54:24.515 [debug] QUERY OK source="tasks" db=1.3ms queue=0.1ms idle=2.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226786, 8418, ~U[2026-01-10 08:54:24Z], ~U[2026-01-10 08:54:24Z]] 19:54:24.515 [debug] QUERY OK source="media_metadata" db=0.6ms queue=0.1ms idle=2.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] 19:54:24.515 [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 [] 19:54:24.516 [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 [] 19:54:24.517 [debug] QUERY OK source="media_profiles" db=1.3ms 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] 19:54:24.517 [debug] Running yt-dlp command for action: get_downloadable_status 19:54:24.518 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:54:24.519 [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 [] 19:54:24.519 [debug] QUERY OK source="tasks" db=0.5ms idle=1.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226787, 7, ~U[2026-01-10 08:54:24Z], ~U[2026-01-10 08:54:24Z]] 19:54:24.519 [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 [] 19:54:24.519 [debug] Running yt-dlp command for action: get_downloadable_status 19:54:24.520 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:54:24.520 [info] {"args":{"id":7},"id":226763,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":484351,"event":"job:stop","queue_time":487566,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:54:24.521 [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 [] 19:54:24.521 [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/70/81/7081ac20228929bdc4c54738aaa639ffde0ee48b2ff71097db99aa4717c83f02.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:54:24.522 [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 [] 19:54:24.522 [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 [] 19:54:24.523 [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 [] 19:54:24.523 [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/06/89/0689239d605abdab81580d42b0792f5859f204a67c24efc9932a097379db64ed.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:54:30.058 [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/06/89/0689239d605abdab81580d42b0792f5859f204a67c24efc9932a097379db64ed.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 19:54:30.060 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1615.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:30.061 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1615.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:30.062 [debug] Running yt-dlp command for action: get_downloadable_status 19:54:30.064 [debug] QUERY OK source="settings" db=0.4ms idle=1619.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:30.065 [debug] QUERY OK source="settings" db=0.3ms idle=1017.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:30.065 [debug] QUERY OK source="settings" db=0.4ms 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 [] 19:54:30.066 [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/f3/bd/f3bd679d235456cfe3787aa33df6b1db64784dda82164839607572f2902296d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:54:30.153 [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/70/81/7081ac20228929bdc4c54738aaa639ffde0ee48b2ff71097db99aa4717c83f02.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 19:54:30.155 [debug] QUERY OK source="settings" db=0.6ms idle=94.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:30.156 [debug] QUERY OK source="settings" db=0.6ms 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 [] 19:54:30.156 [debug] Running yt-dlp command for action: get_downloadable_status 19:54:30.158 [debug] QUERY OK source="settings" db=0.3ms idle=93.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:30.159 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=93.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:30.160 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=93.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:30.160 [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/23/68/23685a9809eb7dfab866e6e422f63fbaeb6176cf1ecb737652a99eb586effc9f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:54:35.848 [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/f3/bd/f3bd679d235456cfe3787aa33df6b1db64784dda82164839607572f2902296d4.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 19:54:35.849 [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" 19:54:35.850 [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" 19:54:35.852 [info] {"args":{"id":8380},"id":226784,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11348177,"event":"job:stop","queue_time":497146,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:54:35.861 [info] {"args":{"id":8401},"id":226785,"meta":{},"system_time":1768035275861180575,"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"]} 19:54:35.862 [debug] QUERY OK source="media_items" db=1.0ms idle=416.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] 19:54:35.863 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:54:35.864 [debug] QUERY OK source="sources" db=0.8ms idle=418.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] 19:54:35.865 [debug] QUERY OK source="media_profiles" db=0.7ms idle=419.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] 19:54:35.866 [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] 19:54:35.867 [debug] QUERY OK source="media_metadata" db=0.1ms idle=6.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] 19:54:35.867 [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] 19:54:35.868 [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 [] 19:54:35.868 [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 [] 19:54:35.869 [debug] Running yt-dlp command for action: get_downloadable_status 19:54:35.871 [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 [] 19:54:35.871 [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 [] 19:54:35.872 [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 [] 19:54:35.872 [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/6d/b4/6db4254e76e1868ceb307c090b166eaacd2454a59da81727e31f5fd1dc122e5a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:54:35.876 [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/23/68/23685a9809eb7dfab866e6e422f63fbaeb6176cf1ecb737652a99eb586effc9f.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 19:54:35.876 [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" 19:54:35.877 [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" 19:54:35.878 [info] {"args":{"id":8350},"id":226783,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11375173,"event":"job:stop","queue_time":497146,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:54:35.886 [info] {"args":{"id":8418},"id":226786,"meta":{},"system_time":1768035275886515975,"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"]} 19:54:35.887 [debug] QUERY OK source="media_items" db=0.6ms idle=15.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] 19:54:35.887 [info] User scripts lifecyle file either not present or is empty. Skipping. 19:54:35.889 [debug] QUERY OK source="sources" db=0.8ms idle=16.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] 19:54:35.889 [debug] QUERY OK source="media_profiles" db=0.6ms idle=17.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] 19:54:35.891 [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 [8418] 19:54:35.893 [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" = ?) [8418] 19:54:35.894 [debug] QUERY OK source="media_profiles" db=0.4ms 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] 19:54:35.895 [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 [] 19:54:35.895 [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 [] 19:54:35.896 [debug] Running yt-dlp command for action: get_downloadable_status 19:54:35.898 [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 [] 19:54:35.898 [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 [] 19:54:35.899 [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 [] 19:54:35.899 [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/50/ef/50ef54258144e8903d95be611f488929f5e25fda57004006c572fe9f49fd468b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:54:41.319 [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/50/ef/50ef54258144e8903d95be611f488929f5e25fda57004006c572fe9f49fd468b.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 19:54:41.321 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1876.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.322 [debug] QUERY OK source="settings" db=0.3ms idle=1877.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.323 [debug] Running yt-dlp command for action: get_downloadable_status 19:54:41.324 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1880.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.325 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1238.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.326 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=236.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.326 [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/78/10/78103e3aed505a955653129da99b14766699fc4aaa571dadacf445e9605f7d9b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:54:41.444 [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/6d/b4/6db4254e76e1868ceb307c090b166eaacd2454a59da81727e31f5fd1dc122e5a.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 19:54:41.446 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=124.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.447 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=124.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.448 [debug] Running yt-dlp command for action: get_downloadable_status 19:54:41.451 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=125.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.452 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=126.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.453 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=127.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:41.454 [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/70/af/70afc63865c0664ab4efe69d58a955890ee740def1060b6b5f3897ed8b4b388d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:54:47.141 [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/70/af/70afc63865c0664ab4efe69d58a955890ee740def1060b6b5f3897ed8b4b388d.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 19:54:47.142 [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" 19:54:47.142 [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" 19:54:47.143 [info] {"args":{"id":8401},"id":226785,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11281618,"event":"job:stop","queue_time":11858156,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:54:47.162 [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/78/10/78103e3aed505a955653129da99b14766699fc4aaa571dadacf445e9605f7d9b.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 19:54:47.162 [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" 19:54:47.163 [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" 19:54:47.164 [info] {"args":{"id":8418},"id":226786,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11276745,"event":"job:stop","queue_time":11884174,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 19:54:48.702 [info] {"source":"oban","duration":12076,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:54:56.143 [info] {"args":{"id":11},"id":226764,"meta":{},"system_time":1768035296143277555,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:54:56.144 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 19:54:56.145 [debug] QUERY OK source="settings" db=0.4ms idle=1700.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:54:56.146 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms 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] 19:54:56.146 [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 [] 19:54:56.147 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 19:54:56.147 [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 [] 19:54:56.147 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:54:56.542 [debug] QUERY OK source="media_items" db=2.7ms queue=0.1ms idle=393.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, "VSW2XDMy1n4", "IAT_Zf2PCL4", "-xT57w8ZS8U", "EdS_OqCQSew", "FwEJK_d8y8c", "X07XF175FSA", "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", ...] 19:54:56.550 [debug] QUERY OK source="media_items" db=3.9ms idle=400.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] 19:54:56.555 [debug] QUERY OK source="tasks" db=0.5ms idle=13.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226788, 11, ~U[2026-01-10 08:54:56Z], ~U[2026-01-10 08:54:56Z]] 19:54:56.556 [info] {"args":{"id":11},"id":226764,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":412466,"event":"job:stop","queue_time":269793,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:55:00.008 [info] {"source":"oban","duration":282,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:55:07.759 [info] GET / 19:55:07.759 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:55:07.759 [debug] QUERY OK source="settings" db=0.3ms idle=1315.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:55:07.760 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1315.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:55:07.761 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1316.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:55:07.827 [debug] QUERY OK source="media_items" db=65.3ms idle=600.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:55:07.832 [debug] QUERY OK source="media_items" db=4.7ms idle=383.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:55:07.832 [debug] QUERY OK source="settings" db=0.2ms idle=72.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:55:07.834 [debug] QUERY OK source="settings" db=0.7ms idle=72.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:55:07.835 [debug] QUERY OK source="settings" db=0.5ms idle=73.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:55:07.847 [debug] QUERY OK source="media_items" db=11.1ms idle=9.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 (m0."media_filepath" IS NULL)) [] 19:55:07.849 [debug] QUERY OK source="media_items" db=1.4ms idle=15.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] 19:55:07.850 [debug] QUERY OK source="sources" db=0.6ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 19:55:07.920 [debug] QUERY OK source="media_items" db=65.4ms idle=20.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:55:07.923 [debug] QUERY OK source="media_items" db=2.6ms idle=85.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:55:07.924 [debug] QUERY OK source="sources" db=0.6ms idle=75.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" IN (?,?)) [27, 5] 19:55:07.927 [debug] QUERY OK source="tasks" db=0.3ms idle=77.1ms 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"] 19:55:07.928 [info] Sent 200 in 168ms 19:55:14.186 [info] {"args":{"id":25},"id":226765,"meta":{},"system_time":1768035314186175337,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:55:14.187 [debug] QUERY OK source="sources" db=0.4ms idle=742.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] 19:55:14.190 [debug] QUERY OK source="settings" db=3.4ms idle=743.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:55:14.191 [debug] QUERY OK source="media_profiles" db=0.5ms idle=746.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] 19:55:14.192 [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 [] 19:55:14.192 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 19:55:14.193 [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 [] 19:55:14.193 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:55:14.544 [debug] QUERY OK source="media_items" db=4.9ms idle=348.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"] 19:55:14.547 [debug] QUERY OK source="media_items" db=1.0ms idle=355.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] 19:55:14.560 [debug] QUERY OK source="tasks" db=2.4ms idle=364.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226789, 25, ~U[2026-01-10 08:55:14Z], ~U[2026-01-10 08:55:14Z]] 19:55:14.561 [info] {"args":{"id":25},"id":226765,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":373969,"event":"job:stop","queue_time":459690,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:55:18.712 [info] {"source":"oban","duration":9335,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:55:33.244 [info] {"args":{"id":2},"id":226766,"meta":{},"system_time":1768035333244099160,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:55:33.245 [debug] QUERY OK source="sources" db=0.8ms idle=800.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] 19:55:33.246 [debug] QUERY OK source="settings" db=0.4ms idle=801.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:55:33.247 [debug] QUERY OK source="media_profiles" db=0.3ms idle=802.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] 19:55:33.248 [debug] QUERY OK source="settings" db=0.2ms 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 [] 19:55:33.248 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 19:55:33.248 [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 [] 19:55:33.248 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:55:33.772 [debug] QUERY OK source="media_items" db=2.8ms idle=523.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, "Usk1j8IT7ww", "eIpWmOMdYMA", "M08XtzkUg2A", "XC32_9oNoeQ", "gVqE98_flmc", "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", ...] 19:55:33.782 [debug] QUERY OK source="media_items" db=6.7ms idle=528.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")))) [2] 19:55:33.786 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=537.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226790, 2, ~U[2026-01-10 08:55:33Z], ~U[2026-01-10 08:55:33Z]] 19:55:33.787 [info] {"args":{"id":2},"id":226766,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":542593,"event":"job:stop","queue_time":229454,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:55:48.723 [info] {"source":"oban","duration":10652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:56:00.009 [info] {"source":"oban","duration":264,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:56:08.050 [info] GET / 19:56:08.050 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:56:08.051 [debug] QUERY OK source="settings" db=0.6ms idle=718.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:56:08.051 [debug] QUERY OK source="media_profiles" db=0.4ms idle=606.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:56:08.052 [debug] QUERY OK source="sources" db=0.3ms idle=607.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:56:08.113 [debug] QUERY OK source="media_items" db=61.0ms idle=608.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:56:08.119 [debug] QUERY OK source="media_items" db=5.6ms queue=0.1ms idle=669.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:56:08.121 [debug] QUERY OK source="settings" db=0.6ms queue=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 [] 19:56:08.122 [debug] QUERY OK source="settings" db=0.4ms idle=70.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:56:08.123 [debug] QUERY OK source="settings" db=0.5ms idle=70.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:56:08.134 [debug] QUERY OK source="media_items" db=9.6ms queue=0.1ms 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 (NOT (m0."media_filepath" IS NULL)) [] 19:56:08.137 [debug] QUERY OK source="media_items" db=1.9ms queue=0.1ms idle=15.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:56:08.138 [debug] QUERY OK source="sources" db=0.4ms idle=16.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 (?,?,?)) [12, 15, 6] 19:56:08.181 [debug] QUERY OK source="media_items" db=36.5ms idle=22.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:56:08.183 [debug] QUERY OK source="media_items" db=1.8ms queue=0.1ms idle=58.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] 19:56:08.185 [debug] QUERY OK source="sources" db=0.5ms idle=50.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] 19:56:08.190 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=52.2ms 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"] 19:56:08.191 [info] Sent 200 in 141ms 19:56:18.736 [info] {"source":"oban","duration":10932,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:56:38.421 [info] {"args":{"id":1},"id":226767,"meta":{},"system_time":1768035398421570007,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:56:38.422 [debug] QUERY OK source="sources" db=0.8ms idle=977.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] 19:56:38.426 [debug] QUERY OK source="settings" db=3.2ms idle=979.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:56:38.429 [debug] QUERY OK source="media_profiles" db=2.0ms idle=982.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] 19:56:38.430 [debug] QUERY OK source="settings" db=1.2ms idle=17.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:56:38.431 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 19:56:38.431 [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 [] 19:56:38.431 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:56:38.797 [debug] QUERY OK source="media_items" db=2.8ms queue=0.1ms idle=370.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, "W4asNKhu7Nk", "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", ...] 19:56:38.805 [debug] QUERY OK source="media_items" db=2.9ms queue=0.1ms 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")))) [1] 19:56:38.809 [debug] QUERY OK source="tasks" db=0.5ms idle=377.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226791, 1, ~U[2026-01-10 08:56:38Z], ~U[2026-01-10 08:56:38Z]] 19:56:38.810 [info] {"args":{"id":1},"id":226767,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":388131,"event":"job:stop","queue_time":378127,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:56:47.449 [info] {"args":{"id":19},"id":226768,"meta":{},"system_time":1768035407449015669,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:56:47.450 [debug] QUERY OK source="sources" db=1.2ms idle=1004.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] 19:56:47.451 [debug] QUERY OK source="settings" db=0.3ms idle=1006.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:56:47.452 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1006.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] 19:56:47.453 [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 [] 19:56:47.453 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 19:56:47.454 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:56:47.454 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:56:47.804 [debug] QUERY OK source="media_items" db=1.9ms idle=351.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"] 19:56:47.807 [debug] QUERY OK source="media_items" db=1.0ms idle=354.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")))) [19] 19:56:47.810 [debug] QUERY OK source="tasks" db=0.4ms idle=355.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226792, 19, ~U[2026-01-10 08:56:47Z], ~U[2026-01-10 08:56:47Z]] 19:56:47.810 [info] {"args":{"id":19},"id":226768,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":361239,"event":"job:stop","queue_time":417432,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:56:48.743 [info] {"source":"oban","duration":6423,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:57:00.010 [info] {"source":"oban","duration":542,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:57:08.306 [info] GET / 19:57:08.306 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:57:08.308 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=862.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:57:08.308 [debug] QUERY OK source="media_profiles" db=0.2ms idle=863.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:57:08.309 [debug] QUERY OK source="sources" db=0.3ms idle=864.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:57:08.340 [debug] QUERY OK source="media_items" db=31.0ms idle=864.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:57:08.346 [debug] QUERY OK source="media_items" db=4.7ms queue=0.1ms idle=845.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:57:08.348 [debug] QUERY OK source="settings" db=0.4ms queue=0.3ms idle=39.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:57:08.348 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=39.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:57:08.350 [debug] QUERY OK source="settings" db=0.2ms idle=40.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:57:08.355 [debug] QUERY OK source="media_items" db=3.6ms queue=0.1ms 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 (NOT (m0."media_filepath" IS NULL)) [] 19:57:08.357 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms 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] 19:57:08.358 [debug] QUERY OK source="sources" db=0.3ms idle=10.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" IN (?,?,?)) [12, 15, 6] 19:57:08.402 [debug] QUERY OK source="media_items" db=36.2ms idle=16.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:57:08.405 [debug] QUERY OK source="media_items" db=2.1ms queue=0.1ms idle=52.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 19:57:08.406 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=50.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] 19:57:08.413 [debug] QUERY OK source="tasks" db=0.4ms idle=55.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"] 19:57:08.414 [info] Sent 200 in 108ms 19:57:18.750 [info] {"source":"oban","duration":6565,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:57:39.593 [info] {"args":{"id":26},"id":226769,"meta":{},"system_time":1768035459592910166,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:57:39.594 [debug] QUERY OK source="sources" db=0.9ms idle=148.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] 19:57:39.595 [debug] QUERY OK source="settings" db=0.5ms idle=149.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:57:39.601 [debug] QUERY OK source="media_profiles" db=6.1ms queue=0.1ms idle=150.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] 19:57:39.608 [debug] QUERY OK source="settings" db=6.0ms 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 [] 19:57:39.608 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 19:57:39.609 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=16.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:57:39.610 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:57:40.123 [debug] QUERY OK source="media_items" db=4.9ms idle=523.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, "UO8_-B-383w", "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", ...] 19:57:40.134 [debug] QUERY OK source="media_items" db=8.7ms idle=530.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] 19:57:40.138 [debug] QUERY OK source="tasks" db=0.9ms idle=527.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226793, 26, ~U[2026-01-10 08:57:40Z], ~U[2026-01-10 08:57:40Z]] 19:57:40.139 [info] {"args":{"id":26},"id":226769,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":545789,"event":"job:stop","queue_time":191928,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:57:48.774 [info] {"source":"oban","duration":22775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:57:51.632 [info] {"args":{"id":15},"id":226770,"meta":{},"system_time":1768035471632667570,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:57:51.634 [debug] QUERY OK source="sources" db=1.1ms idle=188.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] 19:57:51.635 [debug] QUERY OK source="settings" db=0.7ms 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 [] 19:57:51.636 [debug] QUERY OK source="media_profiles" db=0.7ms idle=191.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] 19:57:51.637 [debug] QUERY OK source="settings" db=1.0ms 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 [] 19:57:51.637 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 19:57:51.638 [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 [] 19:57:51.638 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:57:52.109 [debug] QUERY OK source="media_items" db=5.0ms queue=0.1ms idle=469.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, "OCnm1p7J38Q", "javP2Zg24jM", "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", ...] 19:57:52.117 [debug] QUERY OK source="media_items" db=5.1ms idle=477.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")))) [15] 19:57:52.122 [debug] QUERY OK source="tasks" db=0.6ms idle=483.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226794, 15, ~U[2026-01-10 08:57:52Z], ~U[2026-01-10 08:57:52Z]] 19:57:52.123 [info] {"args":{"id":15},"id":226770,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":489478,"event":"job:stop","queue_time":279574,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:58:00.011 [info] {"source":"oban","duration":448,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:58:08.570 [info] GET / 19:58:08.570 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:58:08.571 [debug] QUERY OK source="settings" db=0.6ms idle=1126.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:08.572 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1127.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:58:08.573 [debug] QUERY OK source="sources" db=0.3ms idle=1128.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:58:08.631 [debug] QUERY OK source="media_items" db=58.3ms queue=0.1ms idle=1128.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:58:08.635 [debug] QUERY OK source="media_items" db=3.0ms idle=955.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:58:08.635 [debug] QUERY OK source="settings" db=0.2ms idle=63.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:08.636 [debug] QUERY OK source="settings" db=0.3ms idle=63.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:08.637 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=64.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:08.650 [debug] QUERY OK source="media_items" db=10.5ms queue=0.1ms 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)) [] 19:58:08.652 [debug] QUERY OK source="media_items" db=1.4ms queue=0.2ms idle=16.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] 19:58:08.654 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=18.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 (?,?,?)) [12, 15, 6] 19:58:08.697 [debug] QUERY OK source="media_items" db=36.9ms idle=24.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:58:08.699 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=47.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] 19:58:08.701 [debug] QUERY OK source="sources" db=0.4ms idle=48.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] 19:58:08.704 [debug] QUERY OK source="tasks" db=0.2ms idle=49.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"] 19:58:08.705 [info] Sent 200 in 134ms 19:58:15.710 [info] {"args":{"id":3},"id":226771,"meta":{},"system_time":1768035495709888849,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:58:15.711 [debug] QUERY OK source="sources" db=0.7ms idle=1266.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] 19:58:15.718 [debug] QUERY OK source="settings" db=6.4ms queue=0.1ms idle=1267.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:15.725 [debug] QUERY OK source="media_profiles" db=6.1ms queue=0.1ms idle=1021.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] 19:58:15.726 [debug] QUERY OK source="settings" db=1.2ms queue=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 [] 19:58:15.727 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 19:58:15.727 [debug] QUERY OK source="settings" db=0.3ms 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 [] 19:58:15.728 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:58:16.176 [debug] QUERY OK source="media_items" db=2.9ms idle=461.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, "rzQeUM-lMUY", "BkUHm95UvCw", "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", ...] 19:58:16.186 [debug] QUERY OK source="media_items" db=8.6ms idle=459.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] 19:58:16.191 [debug] QUERY OK source="tasks" db=1.0ms idle=462.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226795, 3, ~U[2026-01-10 08:58:16Z], ~U[2026-01-10 08:58:16Z]] 19:58:16.193 [info] {"args":{"id":3},"id":226771,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":482138,"event":"job:stop","queue_time":239304,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:58:18.797 [info] {"source":"oban","duration":22293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:58:39.794 [info] {"args":{"id":22},"id":226772,"meta":{},"system_time":1768035519794014966,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:58:39.796 [debug] QUERY OK source="sources" db=0.9ms queue=0.2ms idle=350.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] 19:58:39.797 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=351.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:39.798 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.2ms idle=353.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] 19:58:39.800 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=14.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:39.800 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 19:58:39.801 [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 [] 19:58:39.801 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:58:40.136 [debug] QUERY OK source="media_items" db=2.2ms idle=337.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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"] 19:58:40.137 [debug] QUERY OK source="settings" db=0.3ms idle=339.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:40.138 [debug] QUERY OK source="settings" db=0.4ms idle=339.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:40.138 [debug] Running yt-dlp command for action: get_media_attributes 19:58:40.140 [debug] QUERY OK source="settings" db=0.3ms idle=339.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:40.141 [debug] QUERY OK source="settings" db=0.3ms idle=339.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:58:40.141 [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 [] 19:58:40.141 [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/a9/05/a905582568f18115862de26a7a7f78da3bee8ec92facc6aa56d924756fbd9c0d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 19:58:45.000 [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/a9/05/a905582568f18115862de26a7a7f78da3bee8ec92facc6aa56d924756fbd9c0d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 19:58:45.000 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 19:58:45.003 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=1556.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] 19:58:45.038 [debug] QUERY OK source="tasks" db=1.8ms idle=1238.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226796, 22, ~U[2026-01-10 08:58:45Z], ~U[2026-01-10 08:58:45Z]] 19:58:45.040 [info] {"args":{"id":22},"id":226772,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5244421,"event":"job:stop","queue_time":717316,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:58:48.808 [info] {"source":"oban","duration":10375,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:59:00.012 [info] {"source":"oban","duration":413,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:59:06.861 [info] {"args":{"id":18},"id":226773,"meta":{},"system_time":1768035546861720954,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:59:06.862 [debug] QUERY OK source="sources" db=0.6ms idle=417.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] 19:59:06.863 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=418.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:06.864 [debug] QUERY OK source="media_profiles" db=0.3ms idle=419.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] 19:59:06.865 [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 [] 19:59:06.865 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 19:59:06.865 [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 [] 19:59:06.865 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 19:59:07.328 [debug] QUERY OK source="media_items" db=2.1ms idle=463.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, "XCGRhxHrjWg", "fyWYr4PukJY", "-w4HeclDfgE", "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", ...] 19:59:07.333 [debug] QUERY OK source="media_items" db=3.0ms idle=466.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] 19:59:07.335 [debug] QUERY OK source="tasks" db=0.3ms idle=469.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226797, 18, ~U[2026-01-10 08:59:07Z], ~U[2026-01-10 08:59:07Z]] 19:59:07.336 [info] {"args":{"id":18},"id":226773,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":473677,"event":"job:stop","queue_time":307290,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 19:59:08.823 [info] GET / 19:59:08.823 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 19:59:08.823 [debug] QUERY OK source="settings" db=0.3ms idle=965.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:08.824 [debug] QUERY OK source="media_profiles" db=0.3ms idle=379.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 19:59:08.825 [debug] QUERY OK source="sources" db=0.6ms idle=380.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 19:59:08.855 [debug] QUERY OK source="media_items" db=29.9ms idle=380.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:59:08.859 [debug] QUERY OK source="media_items" db=3.1ms queue=0.1ms idle=411.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 19:59:08.860 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=35.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:08.862 [debug] QUERY OK source="settings" db=0.9ms queue=0.2ms idle=35.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:08.863 [debug] QUERY OK source="settings" db=0.6ms 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 [] 19:59:08.867 [debug] QUERY OK source="media_items" db=2.3ms idle=6.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)) [] 19:59:08.869 [debug] QUERY OK source="media_items" db=1.2ms idle=7.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 19:59:08.871 [debug] QUERY OK source="sources" db=0.4ms idle=9.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 (?,?,?)) [12, 15, 6] 19:59:08.917 [debug] QUERY OK source="media_items" db=39.0ms queue=0.1ms idle=15.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"))) [] 19:59:08.919 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=54.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] 19:59:08.921 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=52.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" IN (?,?)) [27, 5] 19:59:08.926 [debug] QUERY OK source="tasks" db=0.4ms idle=56.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"] 19:59:08.928 [info] Sent 200 in 105ms 19:59:13.091 [info] GET /.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w 19:59:13.094 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=648.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:13.094 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=649.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:13.095 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:59:13.095 [error] #PID<0.50759.0> running PinchflatWeb.Endpoint (connection #PID<0.50758.0>, stream id 1) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w ** (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/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50758.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 37820}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50759.0>, params: %{}, path_info: [".well-known", "acme-challenge", "IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlS99RNl9L9S_EAD0Oh"} ], 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.50758.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 37820}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50758.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 37820}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50759.0>, params: %{}, path_info: [".well-known", "acme-challenge", "IjWC5Uzyn9dlJNY1z8mq8ip95z-U5312Eyqbi14yP5w"], 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.e (truncated) 19:59:14.584 [info] GET /.well-known/acme-challenge/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc 19:59:14.585 [debug] QUERY OK source="settings" db=0.7ms idle=710.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:14.586 [debug] QUERY OK source="settings" db=0.6ms idle=140.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:14.586 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:59:14.586 [error] #PID<0.50761.0> running PinchflatWeb.Endpoint (connection #PID<0.50760.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc ** (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/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50760.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 36356}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50761.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc"], 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/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc"}, {"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/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlS-C09BC260T0ADDXC"} ], 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.50760.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 36356}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50760.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 36356}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50761.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Hs4y6Lnm1dV6Iwbg7knT_V7HrWiekOQL7VFQ7Blhgyc"], 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) 19:59:18.709 [info] GET /.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE 19:59:18.710 [debug] QUERY OK source="settings" db=0.6ms idle=827.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:18.711 [debug] QUERY OK source="settings" db=0.8ms idle=266.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:18.711 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:59:18.712 [error] #PID<0.50763.0> running PinchflatWeb.Endpoint (connection #PID<0.50762.0>, stream id 1) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE ** (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/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36372}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50763.0>, params: %{}, path_info: [".well-known", "acme-challenge", "YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlS-SMoG3wk37EADDXi"} ], 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.50762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36372}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36372}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50763.0>, params: %{}, path_info: [".well-known", "acme-challenge", "YNaBEowjGjm4_TGjHJv-jod0Qcx-h7DwIqGyboPS6FE"], 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.e (truncated) 19:59:18.833 [info] {"source":"oban","duration":23910,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:59:20.824 [info] GET /.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM 19:59:20.825 [debug] QUERY OK source="settings" db=0.4ms idle=936.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:20.826 [debug] QUERY OK source="settings" db=0.4ms idle=381.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:20.826 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:59:20.827 [error] #PID<0.50764.0> running PinchflatWeb.Endpoint (connection #PID<0.50762.0>, stream id 2) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM ** (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/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36372}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50764.0>, params: %{}, path_info: [".well-known", "acme-challenge", "DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlS-aE4KT6EcZkADDYC"} ], 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.50762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36372}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36372}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50764.0>, params: %{}, path_info: [".well-known", "acme-challenge", "DFgOY7L_KBHgWTf3-AtBTr26ULGXunMz5Vm-Mm5EFcM"], 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.e (truncated) 19:59:20.886 [info] GET /.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA 19:59:20.887 [debug] QUERY OK source="settings" db=0.6ms idle=442.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:20.888 [debug] QUERY OK source="settings" db=0.4ms idle=443.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:20.888 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:59:20.888 [error] #PID<0.50765.0> running PinchflatWeb.Endpoint (connection #PID<0.50762.0>, stream id 3) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA ** (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/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36372}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50765.0>, params: %{}, path_info: [".well-known", "acme-challenge", "4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlS-aTiAvUgdJgAD0PB"} ], 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.50762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36372}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36372}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.50765.0>, params: %{}, path_info: [".well-known", "acme-challenge", "4qK4zn_KLFPosrnHYge8YcAmMxYoV-wBkGU7465OAtA"], 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.e (truncated) 19:59:37.765 [info] GET /.well-known/acme-challenge/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc 19:59:37.766 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1321.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:37.766 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1322.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:37.766 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:59:37.767 [error] #PID<0.50768.0> running PinchflatWeb.Endpoint (connection #PID<0.50767.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc ** (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/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50767.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 50094}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50768.0>, params: %{}, path_info: [".well-known", "acme-challenge", "8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc"], 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/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc"}, {"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/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlS_ZLzWlrgxToADDYi"} ], 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.50767.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 50094}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50767.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 50094}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50768.0>, params: %{}, path_info: [".well-known", "acme-challenge", "8J8Flw_E-_TL8cPoPcV1JrrJ4kfOZN8hC7zclWC6mEc"], 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) 19:59:48.852 [info] {"source":"oban","duration":18446,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:59:54.466 [info] GET /.well-known/acme-challenge/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass 19:59:54.467 [debug] QUERY OK source="settings" db=0.6ms idle=1022.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:54.468 [debug] QUERY OK source="settings" db=0.4ms idle=478.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:59:54.468 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 19:59:54.469 [error] #PID<0.50772.0> running PinchflatWeb.Endpoint (connection #PID<0.50771.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass ** (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/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50771.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 43884}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50772.0>, params: %{}, path_info: [".well-known", "acme-challenge", "o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass"], 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/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass"}, {"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/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlTAXZqc_PNX4cADDZi"} ], 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.50771.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 43884}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50771.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 43884}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50772.0>, params: %{}, path_info: [".well-known", "acme-challenge", "o1yH5K7EMZUUEobX-T-zvekmjQmkFMQdx8xWL0X_ass"], 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) 20:00:00.013 [info] {"source":"oban","duration":499,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:00:04.030 [info] {"args":{"id":23},"id":226774,"meta":{},"system_time":1768035604030194411,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:00:04.032 [debug] QUERY OK source="sources" db=1.7ms idle=1585.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] 20:00:04.033 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms 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 [] 20:00:04.034 [debug] QUERY OK source="media_profiles" db=0.3ms idle=589.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] 20:00:04.037 [debug] QUERY OK source="settings" db=3.0ms 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 [] 20:00:04.037 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 20:00:04.038 [debug] QUERY OK source="settings" db=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 [] 20:00:04.038 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:00:04.381 [debug] QUERY OK source="media_items" db=2.0ms idle=346.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"] 20:00:04.386 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=352.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] 20:00:04.391 [debug] QUERY OK source="tasks" db=0.7ms idle=352.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226798, 23, ~U[2026-01-10 09:00:04Z], ~U[2026-01-10 09:00:04Z]] 20:00:04.392 [info] {"args":{"id":23},"id":226774,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":361200,"event":"job:stop","queue_time":401872,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:00:09.093 [info] GET / 20:00:09.093 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:00:09.094 [debug] QUERY OK source="settings" db=0.6ms idle=1649.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:09.094 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1650.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:00:09.095 [debug] QUERY OK source="sources" db=0.2ms idle=1650.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:00:09.156 [debug] QUERY OK source="media_items" db=60.0ms idle=1067.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:00:09.159 [debug] QUERY OK source="media_items" db=3.4ms idle=126.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:00:09.160 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=66.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:09.160 [debug] QUERY OK source="settings" db=0.1ms idle=65.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:09.161 [debug] QUERY OK source="settings" db=0.1ms idle=65.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:09.166 [debug] QUERY OK source="media_items" db=3.4ms idle=7.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)) [] 20:00:09.167 [debug] QUERY OK source="media_items" db=0.6ms idle=7.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] 20:00:09.168 [debug] QUERY OK source="sources" db=0.2ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:00:09.204 [debug] QUERY OK source="media_items" db=33.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:00:09.209 [debug] QUERY OK source="media_items" db=3.9ms idle=43.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:00:09.210 [debug] QUERY OK source="sources" db=0.7ms idle=43.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] 20:00:09.216 [debug] QUERY OK source="tasks" db=0.5ms idle=48.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"] 20:00:09.218 [info] Sent 200 in 125ms 20:00:18.864 [info] {"source":"oban","duration":10591,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:00:36.112 [info] {"args":{"id":10},"id":226775,"meta":{},"system_time":1768035636112191287,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:00:36.113 [debug] QUERY OK source="sources" db=0.9ms idle=1668.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] 20:00:36.121 [debug] QUERY OK source="settings" db=7.8ms idle=1010.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:36.128 [debug] QUERY OK source="media_profiles" db=6.4ms idle=677.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] 20:00:36.129 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=23.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:36.129 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 20:00:36.129 [debug] QUERY OK source="settings" db=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 [] 20:00:36.129 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:00:36.509 [debug] QUERY OK source="media_items" db=6.2ms idle=389.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "g0z7tR6KdIE", "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", ...] 20:00:36.512 [debug] QUERY OK source="settings" db=0.5ms idle=389.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:36.512 [debug] QUERY OK source="settings" db=0.4ms idle=383.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:36.512 [debug] Running yt-dlp command for action: get_media_attributes 20:00:36.514 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:00:36.515 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:00:36.515 [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 [] 20:00:36.515 [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/4b/08/4b088752e26a9cbb44e2b7bd7796f4f2529835c3fcb4aa55aac9118190eab0d5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:00:39.584 [info] GET /.well-known/acme-challenge/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA 20:00:39.586 [debug] QUERY OK source="settings" db=0.5ms idle=1140.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:39.586 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1141.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:39.586 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:00:39.587 [error] #PID<0.50783.0> running PinchflatWeb.Endpoint (connection #PID<0.50782.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA ** (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/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50782.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37882}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50783.0>, params: %{}, path_info: [".well-known", "acme-challenge", "bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA"], 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/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA"}, {"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/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlTC_esm_j8uUoADDbi"} ], 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.50782.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37882}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50782.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 37882}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50783.0>, params: %{}, path_info: [".well-known", "acme-challenge", "bA9NbcBCVQ5dW9nM9js72BXgqfaCzkZwdq1ztn79zUA"], 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) 20:00:41.052 [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/4b/08/4b088752e26a9cbb44e2b7bd7796f4f2529835c3fcb4aa55aac9118190eab0d5.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. 20:00:41.052 [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} 20:00:41.053 [debug] QUERY OK source="media_items" db=0.9ms idle=1466.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")))) [10] 20:00:41.056 [debug] QUERY OK source="tasks" db=0.5ms idle=611.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226799, 10, ~U[2026-01-10 09:00:41Z], ~U[2026-01-10 09:00:41Z]] 20:00:41.056 [info] {"args":{"id":10},"id":226775,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4944190,"event":"job:stop","queue_time":348081,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:00:46.458 [info] GET /.well-known/acme-challenge/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ 20:00:46.460 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=325.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:46.461 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=15.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:00:46.461 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:00:46.463 [error] #PID<0.50787.0> running PinchflatWeb.Endpoint (connection #PID<0.50786.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ ** (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/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50786.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 44542}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50787.0>, params: %{}, path_info: [".well-known", "acme-challenge", "n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ"], 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/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ"}, {"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/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlTDZFehr3o97IADDdC"} ], 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.50786.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 44542}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50786.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 44542}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50787.0>, params: %{}, path_info: [".well-known", "acme-challenge", "n_arYcMZMODvslo0FEIiHE-iubxLqDRwOvOcYq1GwXQ"], 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) 20:00:48.890 [info] {"source":"oban","duration":25024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:01:00.014 [info] {"source":"oban","duration":421,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:01:04.209 [info] {"args":{"id":6},"id":226776,"meta":{},"system_time":1768035664208883151,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:01:04.210 [debug] QUERY OK source="sources" db=0.4ms idle=1764.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] 20:01:04.211 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1014.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:01:04.212 [debug] QUERY OK source="media_profiles" db=0.7ms idle=766.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] 20:01:04.212 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:01:04.212 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 20:01:04.213 [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 [] 20:01:04.214 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:01:04.657 [debug] QUERY OK source="media_items" db=5.9ms queue=0.1ms idle=441.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, "cIrfWaWIByQ", "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", ...] 20:01:04.666 [debug] QUERY OK source="media_items" db=3.9ms 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")))) [6] 20:01:04.671 [debug] QUERY OK source="tasks" db=0.9ms idle=456.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226800, 6, ~U[2026-01-10 09:01:04Z], ~U[2026-01-10 09:01:04Z]] 20:01:04.672 [info] {"args":{"id":6},"id":226776,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":462541,"event":"job:stop","queue_time":316012,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:01:06.215 [info] {"args":{"id":24},"id":226777,"meta":{},"system_time":1768035666214579428,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:01:06.216 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms idle=1542.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] 20:01:06.217 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1537.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:01:06.218 [debug] QUERY OK source="media_profiles" db=0.8ms idle=1013.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] 20:01:06.218 [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 [] 20:01:06.219 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 20:01:06.219 [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 [] 20:01:06.219 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:01:06.588 [debug] QUERY OK source="media_items" db=4.8ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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", ...] 20:01:06.592 [debug] QUERY OK source="media_items" db=1.9ms idle=373.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] 20:01:06.596 [debug] QUERY OK source="tasks" db=0.8ms idle=376.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226801, 24, ~U[2026-01-10 09:01:06Z], ~U[2026-01-10 09:01:06Z]] 20:01:06.597 [info] {"args":{"id":24},"id":226777,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":382049,"event":"job:stop","queue_time":401814,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:01:09.361 [info] GET / 20:01:09.361 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:01:09.363 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=917.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:01:09.364 [debug] QUERY OK source="media_profiles" db=0.3ms idle=919.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:01:09.365 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=919.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:01:09.428 [debug] QUERY OK source="media_items" db=62.5ms queue=0.1ms idle=920.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:01:09.431 [debug] QUERY OK source="media_items" db=3.1ms idle=212.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:01:09.432 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms 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 [] 20:01:09.433 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=68.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:01:09.433 [debug] QUERY OK source="settings" db=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 [] 20:01:09.445 [debug] QUERY OK source="media_items" db=10.8ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:01:09.446 [debug] QUERY OK source="media_items" db=1.0ms idle=14.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] 20:01:09.447 [debug] QUERY OK source="sources" db=0.3ms idle=14.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 (?,?,?)) [12, 15, 6] 20:01:09.483 [debug] QUERY OK source="media_items" db=33.2ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:01:09.485 [debug] QUERY OK source="media_items" db=1.5ms queue=0.1ms idle=49.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] 20:01:09.486 [debug] QUERY OK source="sources" db=0.3ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [27, 5] 20:01:09.490 [debug] QUERY OK source="tasks" db=0.4ms idle=43.2ms 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"] 20:01:09.492 [info] Sent 200 in 131ms 20:01:18.902 [info] {"source":"oban","duration":10695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:01:48.913 [info] {"source":"oban","duration":10658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:02:00.015 [info] {"source":"oban","duration":356,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:02:09.623 [info] GET / 20:02:09.623 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:02:09.624 [debug] QUERY OK source="settings" db=0.4ms idle=1179.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:02:09.624 [debug] QUERY OK source="media_profiles" db=0.3ms idle=252.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:02:09.625 [debug] QUERY OK source="sources" db=0.2ms idle=180.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:02:09.684 [debug] QUERY OK source="media_items" db=58.6ms idle=181.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:02:09.685 [debug] QUERY OK source="media_items" db=1.2ms idle=239.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:02:09.686 [debug] QUERY OK source="settings" db=0.2ms idle=61.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:02:09.686 [debug] QUERY OK source="settings" db=0.1ms idle=61.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:02:09.687 [debug] QUERY OK source="settings" db=0.2ms idle=61.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:02:09.691 [debug] QUERY OK source="media_items" db=3.2ms idle=4.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)) [] 20:02:09.693 [debug] QUERY OK source="media_items" db=1.9ms idle=6.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)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:02:09.695 [debug] QUERY OK source="sources" db=0.9ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:02:09.770 [debug] QUERY OK source="media_items" db=72.7ms idle=11.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:02:09.773 [debug] QUERY OK source="media_items" db=2.5ms queue=0.1ms idle=83.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] 20:02:09.774 [debug] QUERY OK source="sources" db=0.4ms idle=82.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 (?,?)) [27, 5] 20:02:09.778 [debug] QUERY OK source="tasks" db=0.5ms idle=84.1ms 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"] 20:02:09.779 [info] Sent 200 in 156ms 20:02:15.620 [info] GET /.well-known/acme-challenge/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0 20:02:15.621 [debug] QUERY OK source="settings" db=0.6ms idle=232.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:02:15.622 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=177.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:02:15.623 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:02:15.624 [error] #PID<0.50802.0> running PinchflatWeb.Endpoint (connection #PID<0.50801.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0 ** (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/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50801.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 33974}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50802.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0"], 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/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0"}, {"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/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlTIlPXMt1DKqEADDji"} ], 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.50801.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 33974}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.50801.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 33974}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.50802.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Hy_wJy3tWbTk1NhebMMTrRfxR_tEMEuhPrdlaP5ARp0"], 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) 20:02:18.944 [info] {"source":"oban","duration":30048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:02:47.493 [info] {"args":{"id":21},"id":226778,"meta":{},"system_time":1768035767492744963,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:02:47.494 [debug] QUERY OK source="sources" db=1.1ms idle=49.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] 20:02:47.499 [debug] QUERY OK source="settings" db=3.8ms 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 [] 20:02:47.503 [debug] QUERY OK source="media_profiles" db=3.5ms idle=54.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] 20:02:47.506 [debug] QUERY OK source="settings" db=2.8ms queue=0.1ms idle=24.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:02:47.506 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 20:02:47.507 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=14.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:02:47.507 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:02:48.094 [debug] QUERY OK source="media_items" db=2.5ms idle=596.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "9t1DPHAoHyw", "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", ...] 20:02:48.101 [debug] QUERY OK source="media_items" db=4.6ms idle=597.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] 20:02:48.103 [debug] QUERY OK source="tasks" db=0.4ms idle=595.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226802, 21, ~U[2026-01-10 09:02:48Z], ~U[2026-01-10 09:02:48Z]] 20:02:48.104 [info] {"args":{"id":21},"id":226778,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":610988,"event":"job:stop","queue_time":337649,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:02:48.955 [info] {"source":"oban","duration":10634,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:02:58.522 [info] {"args":{"id":17},"id":226779,"meta":{},"system_time":1768035778522794411,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:02:58.523 [debug] QUERY OK source="sources" db=0.6ms idle=1078.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] 20:02:58.525 [debug] QUERY OK source="settings" db=1.4ms 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 [] 20:02:58.526 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=81.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] 20:02:58.527 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:02:58.527 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 20:02:58.527 [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 [] 20:02:58.528 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:02:58.879 [debug] QUERY OK source="media_items" db=3.9ms idle=351.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", "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", "e3XOdq86shM", ...] 20:02:58.886 [debug] QUERY OK source="media_items" db=5.3ms idle=354.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] 20:02:58.891 [debug] QUERY OK source="tasks" db=1.1ms idle=361.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226803, 17, ~U[2026-01-10 09:02:58Z], ~U[2026-01-10 09:02:58Z]] 20:02:58.892 [info] {"args":{"id":17},"id":226779,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":368318,"event":"job:stop","queue_time":277943,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:03:00.016 [info] {"source":"oban","duration":468,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:03:09.941 [info] GET / 20:03:09.941 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:03:09.942 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1497.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:03:09.943 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1498.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:03:09.943 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1392.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:03:10.005 [debug] QUERY OK source="media_items" db=60.8ms idle=499.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:03:10.014 [debug] QUERY OK source="media_items" db=8.7ms queue=0.1ms idle=451.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:03:10.015 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=71.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:03:10.015 [debug] QUERY OK source="settings" db=0.5ms idle=72.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:03:10.017 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=72.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:03:10.027 [debug] QUERY OK source="media_items" db=8.4ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:03:10.029 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=13.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:03:10.030 [debug] QUERY OK source="sources" db=0.5ms idle=14.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 (?,?,?)) [12, 15, 6] 20:03:10.070 [debug] QUERY OK source="media_items" db=37.1ms idle=17.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"))) [] 20:03:10.073 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=53.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:03:10.074 [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" IN (?,?)) [27, 5] 20:03:10.079 [debug] QUERY OK source="tasks" db=0.8ms idle=49.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"] 20:03:10.080 [info] Sent 200 in 138ms 20:03:18.966 [info] {"source":"oban","duration":10692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:03:48.680 [info] {"args":{"id":16},"id":226780,"meta":{},"system_time":1768035828680201366,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:03:48.684 [debug] QUERY OK source="sources" db=3.9ms idle=1236.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] 20:03:48.686 [debug] QUERY OK source="settings" db=0.9ms queue=0.2ms idle=1018.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:03:48.687 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=242.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] 20:03:48.691 [debug] QUERY OK source="settings" db=3.5ms queue=0.1ms idle=17.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:03:48.691 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 20:03:48.692 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:03:48.692 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:03:48.979 [info] {"source":"oban","duration":10940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:03:49.088 [debug] QUERY OK source="media_items" db=2.8ms 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, "9T4hx4KjyQ8", "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", ...] 20:03:49.095 [debug] QUERY OK source="media_items" db=2.2ms queue=0.1ms idle=405.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")))) [16] 20:03:49.099 [debug] QUERY OK source="tasks" db=0.8ms idle=119.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226804, 16, ~U[2026-01-10 09:03:49Z], ~U[2026-01-10 09:03:49Z]] 20:03:49.100 [info] {"args":{"id":16},"id":226780,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":419174,"event":"job:stop","queue_time":354506,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:03:49.683 [info] {"args":{"id":9},"id":226781,"meta":{},"system_time":1768035829683523277,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:03:49.685 [debug] QUERY OK source="sources" db=1.0ms queue=0.2ms idle=585.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] 20:03:49.686 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=585.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:03:49.687 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=579.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] 20:03:49.688 [debug] QUERY OK source="settings" db=0.3ms queue=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 [] 20:03:49.688 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 20:03:49.689 [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 [] 20:03:49.690 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:03:50.019 [debug] QUERY OK source="media_items" db=2.6ms idle=330.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, "16b4SEeZ45I", "el_J4DE8WnA", "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", ...] 20:03:50.026 [debug] QUERY OK source="media_items" db=3.1ms idle=336.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] 20:03:50.029 [debug] QUERY OK source="tasks" db=0.4ms idle=339.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226805, 9, ~U[2026-01-10 09:03:50Z], ~U[2026-01-10 09:03:50Z]] 20:03:50.030 [info] {"args":{"id":9},"id":226781,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":346342,"event":"job:stop","queue_time":331017,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:04:00.017 [info] {"source":"oban","duration":294,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:04:10.220 [info] GET / 20:04:10.220 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:04:10.221 [debug] QUERY OK source="settings" db=0.4ms queue=0.3ms idle=776.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:10.222 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=777.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:04:10.223 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=777.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:04:10.286 [debug] QUERY OK source="media_items" db=63.0ms queue=0.1ms idle=778.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:04:10.292 [debug] QUERY OK source="media_items" db=5.1ms queue=0.1ms idle=559.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:04:10.293 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:04:10.294 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:04:10.296 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=72.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:10.303 [debug] QUERY OK source="media_items" db=4.8ms idle=11.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)) [] 20:04:10.304 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=11.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] 20:04:10.306 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=12.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 (?,?,?)) [12, 15, 6] 20:04:10.347 [debug] QUERY OK source="media_items" db=34.5ms idle=18.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:04:10.349 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=51.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:04:10.350 [debug] QUERY OK source="sources" db=0.3ms idle=47.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] 20:04:10.356 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=51.5ms 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"] 20:04:10.358 [info] Sent 200 in 138ms 20:04:14.759 [info] {"args":{"id":20},"id":226782,"meta":{},"system_time":1768035854759331959,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:04:14.760 [debug] QUERY OK source="sources" db=0.8ms idle=1315.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] 20:04:14.761 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1316.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:14.765 [debug] QUERY OK source="media_profiles" db=3.8ms idle=1021.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] 20:04:14.766 [debug] QUERY OK source="settings" db=0.8ms idle=19.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:14.767 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 20:04:14.767 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:04:14.768 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:04:15.183 [debug] QUERY OK source="media_items" db=2.9ms idle=419.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", ...] 20:04:15.190 [debug] QUERY OK source="media_items" db=4.3ms idle=424.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] 20:04:15.193 [debug] QUERY OK source="tasks" db=0.5ms idle=424.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226806, 20, ~U[2026-01-10 09:04:15Z], ~U[2026-01-10 09:04:15Z]] 20:04:15.194 [info] {"args":{"id":20},"id":226782,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":434026,"event":"job:stop","queue_time":296695,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:04:18.991 [info] {"source":"oban","duration":10716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:04:24.781 [info] {"args":{"id":7},"id":226787,"meta":{},"system_time":1768035864780908837,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:04:24.782 [debug] QUERY OK source="sources" db=0.9ms idle=336.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] 20:04:24.783 [debug] QUERY OK source="settings" db=0.4ms idle=338.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:24.784 [debug] QUERY OK source="media_profiles" db=0.9ms idle=338.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] 20:04:24.785 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:04:24.785 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 20:04:24.786 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:04:24.786 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:04:25.228 [debug] QUERY OK source="media_items" db=5.4ms queue=0.1ms idle=439.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, "EzCiEv1IqiA", "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", ...] 20:04:25.240 [debug] QUERY OK source="media_items" db=7.7ms idle=449.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")))) [7] 20:04:25.250 [debug] QUERY OK source="tasks" db=1.2ms idle=462.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226807, 8350, ~U[2026-01-10 09:04:25Z], ~U[2026-01-10 09:04:25Z]] 20:04:25.261 [info] {"args":{"id":8350},"id":226807,"meta":{},"system_time":1768035865261449097,"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"]} 20:04:25.261 [info] {"args":{"id":8380},"id":226808,"meta":{},"system_time":1768035865261534562,"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"]} 20:04:25.262 [debug] QUERY OK source="media_items" db=0.6ms idle=11.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] 20:04:25.262 [debug] QUERY OK source="tasks" db=2.4ms idle=12.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226808, 8380, ~U[2026-01-10 09:04:25Z], ~U[2026-01-10 09:04:25Z]] 20:04:25.263 [debug] QUERY OK source="media_items" db=0.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] 20:04:25.263 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:04:25.263 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:04:25.264 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=3.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] 20:04:25.265 [debug] QUERY OK source="sources" db=1.1ms queue=0.2ms idle=1.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] 20:04:25.265 [debug] QUERY OK source="media_profiles" db=0.6ms 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] 20:04:25.267 [debug] QUERY OK source="media_profiles" db=1.2ms 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] 20:04:25.268 [debug] QUERY OK source="media_items" db=2.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] 20:04:25.269 [debug] QUERY OK source="media_items" db=1.2ms idle=3.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] 20:04:25.271 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=2.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226809, 8401, ~U[2026-01-10 09:04:25Z], ~U[2026-01-10 09:04:25Z]] 20:04:25.271 [debug] QUERY OK source="media_metadata" db=0.4ms 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] 20:04:25.272 [debug] QUERY OK source="media_profiles" db=0.3ms queue=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] 20:04:25.272 [debug] QUERY OK source="media_metadata" db=0.4ms 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] 20:04:25.273 [debug] QUERY OK source="media_profiles" db=0.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] 20:04:25.273 [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 [] 20:04:25.274 [debug] QUERY OK source="settings" db=0.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 [] 20:04:25.274 [debug] QUERY OK source="settings" db=0.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 [] 20:04:25.275 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:04:25.275 [debug] Running yt-dlp command for action: get_downloadable_status 20:04:25.276 [debug] Running yt-dlp command for action: get_downloadable_status 20:04:25.276 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=1.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226810, 8418, ~U[2026-01-10 09:04:25Z], ~U[2026-01-10 09:04:25Z]] 20:04:25.277 [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 [] 20:04:25.278 [debug] QUERY OK source="settings" db=0.5ms queue=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 [] 20:04:25.278 [debug] QUERY OK source="settings" db=0.3ms queue=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 [] 20:04:25.279 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:04:25.279 [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 [] 20:04:25.279 [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/b6/a4/b6a47b36da9ab6637eb6ef4e50a45c6607bee0e9409a15c19a3bb9c88289f2e8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:04:25.280 [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 [] 20:04:25.280 [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/46/64/466451e9e2b56031f69dfc645ccd20d59215edc0df7bc1fe7da1bb9b17ec208f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:04:25.280 [debug] QUERY OK source="tasks" db=0.7ms idle=1.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226811, 7, ~U[2026-01-10 09:04:25Z], ~U[2026-01-10 09:04:25Z]] 20:04:25.281 [info] {"args":{"id":7},"id":226787,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":500157,"event":"job:stop","queue_time":263817,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:04:31.511 [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/b6/a4/b6a47b36da9ab6637eb6ef4e50a45c6607bee0e9409a15c19a3bb9c88289f2e8.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 20:04:31.513 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1067.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.514 [debug] QUERY OK source="settings" db=0.6ms idle=1068.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.515 [debug] Running yt-dlp command for action: get_downloadable_status 20:04:31.517 [debug] QUERY OK source="settings" db=0.3ms idle=1071.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.518 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1072.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.518 [debug] QUERY OK source="settings" db=0.2ms idle=721.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.519 [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/55/ba/55ba2a6d92a0e1ffaba8f4b69a3ad673761eb0f1b20fd47bb540507f29ed7550.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:04:31.651 [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/46/64/466451e9e2b56031f69dfc645ccd20d59215edc0df7bc1fe7da1bb9b17ec208f.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 20:04:31.653 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=139.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.654 [debug] QUERY OK source="settings" db=0.5ms idle=139.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.655 [debug] Running yt-dlp command for action: get_downloadable_status 20:04:31.655 [debug] QUERY OK source="settings" db=0.1ms idle=138.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.656 [debug] QUERY OK source="settings" db=0.1ms idle=137.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.656 [debug] QUERY OK source="settings" db=0.1ms idle=137.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:31.656 [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/0a/aa/0aaaf0b35b701851f6f7e39b613ab73ebe795db977c6a440db4de0cefb2140c0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:04:37.060 [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/0a/aa/0aaaf0b35b701851f6f7e39b613ab73ebe795db977c6a440db4de0cefb2140c0.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 20:04:37.060 [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" 20:04:37.061 [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" 20:04:37.061 [info] {"args":{"id":8380},"id":226808,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11799542,"event":"job:stop","queue_time":254095,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:04:37.070 [info] {"args":{"id":8401},"id":226809,"meta":{},"system_time":1768035877069846966,"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"]} 20:04:37.071 [debug] QUERY OK source="media_items" db=0.6ms idle=1625.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] 20:04:37.071 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:04:37.072 [debug] QUERY OK source="sources" db=0.4ms idle=1259.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] 20:04:37.073 [debug] QUERY OK source="media_profiles" db=0.3ms idle=259.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] 20:04:37.074 [debug] QUERY OK source="media_items" db=0.4ms idle=11.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] 20:04:37.075 [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" = ?) [8401] 20:04:37.075 [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] 20:04:37.076 [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 [] 20:04:37.077 [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 [] 20:04:37.078 [debug] Running yt-dlp command for action: get_downloadable_status 20:04:37.079 [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 [] 20:04:37.079 [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 [] 20:04:37.080 [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 [] 20:04:37.080 [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/9c/2e/9c2e9172453192b48b787bc33d311c90cb7903a77fcab1fd481f70d687489c50.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:04:37.508 [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/55/ba/55ba2a6d92a0e1ffaba8f4b69a3ad673761eb0f1b20fd47bb540507f29ed7550.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 20:04:37.509 [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" 20:04:37.509 [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" 20:04:38.077 [info] {"args":{"id":8350},"id":226807,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":12247845,"event":"job:stop","queue_time":254095,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:04:38.085 [info] {"args":{"id":8418},"id":226810,"meta":{},"system_time":1768035878085789244,"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"]} 20:04:38.086 [debug] QUERY OK source="media_items" db=0.3ms idle=1006.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] 20:04:38.086 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:04:38.088 [debug] QUERY OK source="sources" db=0.8ms idle=1006.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] 20:04:38.089 [debug] QUERY OK source="media_profiles" db=0.6ms idle=11.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] 20:04:38.090 [debug] QUERY OK source="media_items" db=0.9ms 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 [8418] 20:04:38.092 [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] 20:04:38.092 [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] 20:04:38.093 [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 [] 20:04:38.094 [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 [] 20:04:38.094 [debug] Running yt-dlp command for action: get_downloadable_status 20:04:38.096 [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 [] 20:04:38.096 [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 [] 20:04:38.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 [] 20:04:38.097 [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/c0/f0/c0f0b50910c22857121678909fd7e541c71cd8e7ebd6f430a3da07b87f61b919.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:04:42.595 [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/9c/2e/9c2e9172453192b48b787bc33d311c90cb7903a77fcab1fd481f70d687489c50.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 20:04:42.596 [debug] QUERY OK source="settings" db=0.3ms idle=1150.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:42.597 [debug] QUERY OK source="settings" db=0.4ms idle=1151.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:42.598 [debug] Running yt-dlp command for action: get_downloadable_status 20:04:42.847 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1401.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:42.848 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1402.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:42.848 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=758.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:42.849 [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/42/82/42827d9b2390152fad68da12a0636890188933d1126bdd3bd366fb2be9eabd02.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:04:43.694 [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/c0/f0/c0f0b50910c22857121678909fd7e541c71cd8e7ebd6f430a3da07b87f61b919.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 20:04:43.695 [debug] QUERY OK source="settings" db=0.4ms idle=1097.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:43.695 [debug] QUERY OK source="settings" db=0.1ms idle=848.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:43.696 [debug] Running yt-dlp command for action: get_downloadable_status 20:04:43.699 [debug] QUERY OK source="settings" db=0.5ms idle=850.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:43.700 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms 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 [] 20:04:43.701 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=606.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:43.701 [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/e0/d9/e0d96c6a1a38171525cc1630183db4d6f0b356b4fc0ab144bdf18e6e0e488d07.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:04:48.371 [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/42/82/42827d9b2390152fad68da12a0636890188933d1126bdd3bd366fb2be9eabd02.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 20:04:48.371 [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" 20:04:48.372 [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" 20:04:48.373 [info] {"args":{"id":8401},"id":226809,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11302412,"event":"job:stop","queue_time":12068155,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:04:49.002 [info] {"source":"oban","duration":10397,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:04:49.409 [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/e0/d9/e0d96c6a1a38171525cc1630183db4d6f0b356b4fc0ab144bdf18e6e0e488d07.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 20:04:49.409 [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" 20:04:49.410 [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" 20:04:49.411 [info] {"args":{"id":8418},"id":226810,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11324736,"event":"job:stop","queue_time":13083131,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:04:57.145 [info] {"args":{"id":11},"id":226788,"meta":{},"system_time":1768035897145025725,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:04:57.146 [debug] QUERY OK source="sources" db=0.5ms idle=700.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] 20:04:57.147 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=701.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:04:57.148 [debug] QUERY OK source="media_profiles" db=0.5ms idle=702.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] 20:04:57.149 [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 [] 20:04:57.149 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 20:04:57.150 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:04:57.151 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:04:57.694 [debug] QUERY OK source="media_items" db=4.5ms 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."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "VSW2XDMy1n4", "IAT_Zf2PCL4", "-xT57w8ZS8U", "EdS_OqCQSew", "FwEJK_d8y8c", "X07XF175FSA", "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", ...] 20:04:57.706 [debug] QUERY OK source="media_items" db=9.1ms idle=549.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] 20:04:57.714 [debug] QUERY OK source="tasks" db=0.9ms idle=19.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226812, 11, ~U[2026-01-10 09:04:57Z], ~U[2026-01-10 09:04:57Z]] 20:04:57.716 [info] {"args":{"id":11},"id":226788,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":569348,"event":"job:stop","queue_time":590464,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:05:00.018 [info] {"source":"oban","duration":417,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:05:10.494 [info] GET / 20:05:10.495 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:05:10.496 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1050.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:05:10.496 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1050.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:05:10.497 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1051.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:05:10.528 [debug] QUERY OK source="media_items" db=31.0ms queue=0.1ms idle=1052.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:05:10.539 [debug] QUERY OK source="media_items" db=10.1ms idle=356.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:05:10.540 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=43.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:05:10.540 [debug] QUERY OK source="settings" db=0.3ms idle=43.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:05:10.541 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms 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 [] 20:05:10.551 [debug] QUERY OK source="media_items" db=8.9ms idle=14.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 (NOT (m0."media_filepath" IS NULL)) [] 20:05:10.553 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=13.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] 20:05:10.556 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=15.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 (?,?,?)) [12, 15, 6] 20:05:10.625 [debug] QUERY OK source="media_items" db=62.6ms idle=22.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"))) [] 20:05:10.628 [debug] QUERY OK source="media_items" db=2.1ms queue=0.2ms idle=84.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:05:10.630 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=78.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] 20:05:10.636 [debug] QUERY OK source="tasks" db=0.4ms idle=81.5ms 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"] 20:05:10.637 [info] Sent 200 in 142ms 20:05:15.203 [info] {"args":{"id":25},"id":226789,"meta":{},"system_time":1768035915203098638,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:05:15.204 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=758.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] 20:05:15.205 [debug] QUERY OK source="settings" db=0.3ms idle=759.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:05:15.208 [debug] QUERY OK source="media_profiles" db=2.8ms idle=759.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] 20:05:15.208 [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 [] 20:05:15.209 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 20:05:15.209 [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 [] 20:05:15.209 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:05:15.536 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms 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 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"] 20:05:15.540 [debug] QUERY OK source="media_items" db=1.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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:05:15.545 [debug] QUERY OK source="tasks" db=1.0ms idle=334.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226813, 25, ~U[2026-01-10 09:05:15Z], ~U[2026-01-10 09:05:15Z]] 20:05:15.546 [info] {"args":{"id":25},"id":226789,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":342383,"event":"job:stop","queue_time":650371,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:05:19.024 [info] {"source":"oban","duration":21052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:05:34.274 [info] {"args":{"id":2},"id":226790,"meta":{},"system_time":1768035934274644332,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:05:34.276 [debug] QUERY OK source="sources" db=0.8ms idle=829.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] 20:05:34.278 [debug] QUERY OK source="settings" db=1.3ms queue=0.1ms idle=831.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:05:34.279 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=832.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] 20:05:34.279 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:05:34.280 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 20:05:34.281 [debug] QUERY OK source="settings" db=0.9ms 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 [] 20:05:34.281 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:05:34.651 [debug] QUERY OK source="media_items" db=4.8ms idle=369.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, "Usk1j8IT7ww", "eIpWmOMdYMA", "M08XtzkUg2A", "XC32_9oNoeQ", "gVqE98_flmc", "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", ...] 20:05:34.659 [debug] QUERY OK source="media_items" db=6.5ms 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] 20:05:34.661 [debug] QUERY OK source="tasks" db=0.7ms idle=379.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226814, 2, ~U[2026-01-10 09:05:34Z], ~U[2026-01-10 09:05:34Z]] 20:05:34.663 [info] {"args":{"id":2},"id":226790,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":387255,"event":"job:stop","queue_time":488447,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:05:49.033 [info] {"source":"oban","duration":8402,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:06:00.019 [info] {"source":"oban","duration":498,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:06:10.805 [info] GET / 20:06:10.806 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:06:10.807 [debug] QUERY OK source="settings" db=0.6ms idle=1361.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:06:10.808 [debug] QUERY OK source="media_profiles" db=0.5ms idle=443.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:06:10.809 [debug] QUERY OK source="sources" db=0.3ms idle=362.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:06:10.870 [debug] QUERY OK source="media_items" db=61.0ms queue=0.1ms idle=363.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:06:10.874 [debug] QUERY OK source="media_items" db=3.3ms idle=425.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:06:10.875 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=67.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:06:10.876 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=67.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:06:10.877 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:06:10.883 [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)) [] 20:06:10.884 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:06:10.886 [debug] QUERY OK source="sources" db=0.3ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:06:10.924 [debug] QUERY OK source="media_items" db=34.8ms idle=13.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"))) [] 20:06:10.927 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=47.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:06:10.928 [debug] QUERY OK source="sources" db=0.5ms idle=44.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 (?,?)) [27, 5] 20:06:10.931 [debug] QUERY OK source="tasks" db=0.5ms idle=46.2ms 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"] 20:06:10.932 [info] Sent 200 in 126ms 20:06:19.042 [info] {"source":"oban","duration":7858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:06:39.453 [info] {"args":{"id":1},"id":226791,"meta":{},"system_time":1768035999452964964,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:06:39.454 [debug] QUERY OK source="sources" db=0.4ms idle=1008.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] 20:06:39.458 [debug] QUERY OK source="settings" db=3.7ms queue=0.1ms idle=1009.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:06:39.460 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1013.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] 20:06:39.461 [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 [] 20:06:39.461 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 20:06:39.462 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:06:39.462 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:06:39.822 [debug] QUERY OK source="media_items" db=3.2ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "W4asNKhu7Nk", "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", ...] 20:06:39.831 [debug] QUERY OK source="media_items" db=2.8ms idle=369.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")))) [1] 20:06:39.834 [debug] QUERY OK source="tasks" db=0.4ms idle=371.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226815, 1, ~U[2026-01-10 09:06:39Z], ~U[2026-01-10 09:06:39Z]] 20:06:39.835 [info] {"args":{"id":1},"id":226791,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":381857,"event":"job:stop","queue_time":641942,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:06:48.488 [info] {"args":{"id":19},"id":226792,"meta":{},"system_time":1768036008487541896,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:06:48.489 [debug] QUERY OK source="sources" db=0.8ms idle=1042.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" = ?) [19] 20:06:48.490 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1044.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:06:48.491 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=1017.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] 20:06:48.492 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:06:48.492 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 20:06:48.493 [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 [] 20:06:48.493 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:06:48.832 [debug] QUERY OK source="media_items" db=2.0ms idle=340.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"] 20:06:48.835 [debug] QUERY OK source="media_items" db=1.2ms idle=343.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] 20:06:48.839 [debug] QUERY OK source="tasks" db=0.8ms idle=345.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226816, 19, ~U[2026-01-10 09:06:48Z], ~U[2026-01-10 09:06:48Z]] 20:06:48.840 [info] {"args":{"id":19},"id":226792,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":351823,"event":"job:stop","queue_time":676474,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:06:49.052 [info] {"source":"oban","duration":9447,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:07:00.020 [info] {"source":"oban","duration":501,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:07:11.049 [info] GET / 20:07:11.049 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:07:11.051 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1503.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:07:11.052 [debug] QUERY OK source="media_profiles" db=0.2ms idle=606.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:07:11.052 [debug] QUERY OK source="sources" db=0.1ms idle=606.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:07:11.081 [debug] QUERY OK source="media_items" db=29.0ms idle=606.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:07:11.087 [debug] QUERY OK source="media_items" db=5.1ms queue=0.1ms idle=531.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:07:11.088 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=36.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:07:11.089 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=37.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:07:11.091 [debug] QUERY OK source="settings" db=0.2ms idle=38.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:07:11.097 [debug] QUERY OK source="media_items" db=3.8ms idle=11.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 (m0."media_filepath" IS NULL)) [] 20:07:11.099 [debug] QUERY OK source="media_items" db=1.4ms idle=10.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] 20:07:11.100 [debug] QUERY OK source="sources" db=0.7ms idle=11.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 (?,?,?)) [12, 15, 6] 20:07:11.164 [debug] QUERY OK source="media_items" db=61.6ms idle=13.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:07:11.167 [debug] QUERY OK source="media_items" db=2.0ms idle=74.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] 20:07:11.168 [debug] QUERY OK source="sources" db=0.4ms idle=70.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 (?,?)) [27, 5] 20:07:11.171 [debug] QUERY OK source="tasks" db=0.3ms idle=72.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"] 20:07:11.173 [info] Sent 200 in 123ms 20:07:19.073 [info] {"source":"oban","duration":19994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:07:40.663 [info] {"args":{"id":26},"id":226793,"meta":{},"system_time":1768036060663127001,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:07:40.664 [debug] QUERY OK source="sources" db=0.9ms idle=218.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] 20:07:40.669 [debug] QUERY OK source="settings" db=3.8ms idle=219.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:07:40.670 [debug] QUERY OK source="media_profiles" db=1.1ms queue=0.1ms idle=224.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] 20:07:40.671 [debug] QUERY OK source="settings" db=0.7ms idle=21.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:07:40.671 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 20:07:40.672 [debug] QUERY OK source="settings" db=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 [] 20:07:40.672 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:07:41.202 [debug] QUERY OK source="media_items" db=2.6ms idle=535.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, "UO8_-B-383w", "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", ...] 20:07:41.209 [debug] QUERY OK source="media_items" db=4.6ms idle=535.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] 20:07:41.214 [debug] QUERY OK source="tasks" db=1.1ms idle=541.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226817, 26, ~U[2026-01-10 09:07:41Z], ~U[2026-01-10 09:07:41Z]] 20:07:41.215 [info] {"args":{"id":26},"id":226793,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":551634,"event":"job:stop","queue_time":519656,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:07:49.096 [info] {"source":"oban","duration":22512,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:07:52.698 [info] {"args":{"id":15},"id":226794,"meta":{},"system_time":1768036072698614682,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:07:52.699 [debug] QUERY OK source="sources" db=0.7ms idle=253.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] 20:07:52.743 [debug] QUERY OK source="settings" db=43.4ms idle=254.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:07:52.745 [debug] QUERY OK source="media_profiles" db=1.1ms queue=0.1ms idle=298.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] 20:07:52.747 [debug] QUERY OK source="settings" db=1.3ms idle=55.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:07:52.747 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 20:07:52.749 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=49.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:07:52.749 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:07:53.204 [debug] QUERY OK source="media_items" db=3.6ms idle=500.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, "OCnm1p7J38Q", "javP2Zg24jM", "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", ...] 20:07:53.213 [debug] QUERY OK source="media_items" db=7.8ms idle=462.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] 20:07:53.218 [debug] QUERY OK source="tasks" db=1.0ms idle=468.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226818, 15, ~U[2026-01-10 09:07:53Z], ~U[2026-01-10 09:07:53Z]] 20:07:53.219 [info] {"args":{"id":15},"id":226794,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":519747,"event":"job:stop","queue_time":578063,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:08:00.022 [info] {"source":"oban","duration":447,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:08:11.298 [info] GET / 20:08:11.298 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:08:11.299 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1551.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:11.300 [debug] QUERY OK source="media_profiles" db=0.5ms idle=854.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:08:11.301 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=855.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:08:11.361 [debug] QUERY OK source="media_items" db=60.4ms idle=855.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:08:11.365 [debug] QUERY OK source="media_items" db=3.2ms idle=611.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:08:11.366 [debug] QUERY OK source="settings" db=0.3ms idle=66.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:11.367 [debug] QUERY OK source="settings" db=0.7ms idle=65.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:11.368 [debug] QUERY OK source="settings" db=0.5ms idle=66.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:11.372 [debug] QUERY OK source="media_items" db=3.3ms idle=6.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)) [] 20:08:11.372 [debug] QUERY OK source="media_items" db=0.5ms 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] 20:08:11.374 [debug] QUERY OK source="sources" db=0.7ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:08:11.442 [debug] QUERY OK source="media_items" db=65.6ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:08:11.444 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=74.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] 20:08:11.446 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=73.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] 20:08:11.450 [debug] QUERY OK source="tasks" db=0.5ms idle=76.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"] 20:08:11.451 [info] Sent 200 in 152ms 20:08:16.776 [info] {"args":{"id":3},"id":226795,"meta":{},"system_time":1768036096776366722,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:08:16.777 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1016.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] 20:08:16.781 [debug] QUERY OK source="settings" db=3.5ms queue=0.1ms idle=332.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:16.783 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=336.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] 20:08:16.784 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=18.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:16.784 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 20:08:16.785 [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 [] 20:08:16.785 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:08:17.289 [debug] QUERY OK source="media_items" db=3.1ms idle=508.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, "rzQeUM-lMUY", "BkUHm95UvCw", "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", ...] 20:08:17.297 [debug] QUERY OK source="media_items" db=4.0ms idle=511.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] 20:08:17.301 [debug] QUERY OK source="tasks" db=1.1ms queue=0.1ms idle=515.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226819, 3, ~U[2026-01-10 09:08:17Z], ~U[2026-01-10 09:08:17Z]] 20:08:17.303 [info] {"args":{"id":3},"id":226795,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":525617,"event":"job:stop","queue_time":584102,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:08:19.108 [info] {"source":"oban","duration":11232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:08:45.864 [info] {"args":{"id":22},"id":226796,"meta":{},"system_time":1768036125864499980,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:08:45.866 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1419.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" = ?) [22] 20:08:45.866 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1420.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:45.868 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=1016.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] 20:08:45.868 [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 [] 20:08:45.869 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 20:08:45.869 [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 [] 20:08:45.870 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:08:46.183 [debug] QUERY OK source="media_items" db=1.2ms idle=315.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"] 20:08:46.184 [debug] QUERY OK source="settings" db=0.2ms idle=317.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:46.184 [debug] QUERY OK source="settings" db=0.2ms idle=316.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:46.184 [debug] Running yt-dlp command for action: get_media_attributes 20:08:46.187 [debug] QUERY OK source="settings" db=0.3ms idle=318.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:46.187 [debug] QUERY OK source="settings" db=0.1ms idle=317.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:08:46.188 [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 [] 20:08:46.188 [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/b6/0d/b60d9be112bb3cfe4b4486168dc426acf0692856ed5137b3acf57d82d2b211d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:08:49.130 [info] {"source":"oban","duration":21669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:08:50.678 [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/b6/0d/b60d9be112bb3cfe4b4486168dc426acf0692856ed5137b3acf57d82d2b211d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 20:08:50.678 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 20:08:50.680 [debug] QUERY OK source="media_items" db=0.8ms queue=0.2ms idle=1233.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] 20:08:50.683 [debug] QUERY OK source="tasks" db=0.3ms idle=809.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226820, 22, ~U[2026-01-10 09:08:50Z], ~U[2026-01-10 09:08:50Z]] 20:08:50.684 [info] {"args":{"id":22},"id":226796,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4819304,"event":"job:stop","queue_time":857615,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:09:00.023 [info] {"source":"oban","duration":410,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:09:07.943 [info] {"args":{"id":18},"id":226797,"meta":{},"system_time":1768036147942683171,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:09:07.944 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1497.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] 20:09:07.945 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms 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 [] 20:09:07.946 [debug] QUERY OK source="media_profiles" db=0.5ms idle=500.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] 20:09:07.947 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:09:07.947 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 20:09:07.948 [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 [] 20:09:07.948 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:09:08.391 [debug] QUERY OK source="media_items" db=4.5ms queue=0.1ms idle=441.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, "XCGRhxHrjWg", "fyWYr4PukJY", "-w4HeclDfgE", "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", ...] 20:09:08.398 [debug] QUERY OK source="media_items" db=3.5ms idle=449.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] 20:09:08.402 [debug] QUERY OK source="tasks" db=0.6ms idle=453.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226821, 18, ~U[2026-01-10 09:09:08Z], ~U[2026-01-10 09:09:08Z]] 20:09:08.403 [info] {"args":{"id":18},"id":226797,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":459964,"event":"job:stop","queue_time":606843,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:09:11.575 [info] GET / 20:09:11.575 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:09:11.576 [debug] QUERY OK source="settings" db=0.5ms idle=629.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:09:11.577 [debug] QUERY OK source="media_profiles" db=0.5ms idle=130.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:09:11.578 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=131.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:09:11.640 [debug] QUERY OK source="media_items" db=62.1ms idle=132.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:09:11.643 [debug] QUERY OK source="media_items" db=3.1ms idle=195.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:09:11.644 [debug] QUERY OK source="settings" db=0.3ms idle=67.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:09:11.644 [debug] QUERY OK source="settings" db=0.2ms idle=67.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:09:11.645 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:09:11.657 [debug] QUERY OK source="media_items" db=10.9ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:09:11.659 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=13.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:09:11.661 [debug] QUERY OK source="sources" db=0.7ms idle=15.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 (?,?,?)) [12, 15, 6] 20:09:11.729 [debug] QUERY OK source="media_items" db=63.7ms idle=20.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:09:11.732 [debug] QUERY OK source="media_items" db=2.7ms idle=83.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] 20:09:11.733 [debug] QUERY OK source="sources" db=0.4ms idle=75.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] 20:09:11.739 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=78.5ms 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"] 20:09:11.741 [info] Sent 200 in 166ms 20:09:19.141 [info] {"source":"oban","duration":10372,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:09:49.152 [info] {"source":"oban","duration":9832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:10:00.024 [info] {"source":"oban","duration":419,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:10:05.094 [info] {"args":{"id":23},"id":226798,"meta":{},"system_time":1768036205094449303,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:10:05.095 [debug] QUERY OK source="sources" db=0.8ms idle=1647.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] 20:10:05.096 [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 [] 20:10:05.098 [debug] QUERY OK source="media_profiles" db=1.1ms idle=650.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] 20:10:05.106 [debug] QUERY OK source="settings" db=7.8ms 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 [] 20:10:05.106 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 20:10:05.107 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:10:05.107 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:10:05.440 [debug] QUERY OK source="media_items" db=2.9ms idle=341.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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"] 20:10:05.445 [debug] QUERY OK source="media_items" db=1.9ms queue=0.1ms 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")))) [23] 20:10:05.447 [debug] QUERY OK source="tasks" db=0.3ms idle=339.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226822, 23, ~U[2026-01-10 09:10:05Z], ~U[2026-01-10 09:10:05Z]] 20:10:05.448 [info] {"args":{"id":23},"id":226798,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":353341,"event":"job:stop","queue_time":701491,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:10:11.897 [info] GET / 20:10:11.897 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:10:11.899 [debug] QUERY OK source="settings" db=0.6ms idle=796.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:11.899 [debug] QUERY OK source="media_profiles" db=0.2ms idle=451.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:10:11.900 [debug] QUERY OK source="sources" db=0.1ms idle=452.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:10:11.931 [debug] QUERY OK source="media_items" db=30.6ms queue=0.1ms idle=452.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:10:11.935 [debug] QUERY OK source="media_items" db=3.4ms queue=0.2ms idle=483.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:10:11.936 [debug] QUERY OK source="settings" db=0.2ms idle=37.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:11.937 [debug] QUERY OK source="settings" db=0.2ms idle=37.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:11.938 [debug] QUERY OK source="settings" db=0.1ms queue=0.2ms idle=37.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:11.944 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:10:11.945 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=8.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] 20:10:11.947 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=9.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 (?,?,?)) [12, 15, 6] 20:10:12.020 [debug] QUERY OK source="media_items" db=66.1ms queue=0.1ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:10:12.022 [debug] QUERY OK source="media_items" db=1.8ms queue=0.1ms idle=82.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:10:12.025 [debug] QUERY OK source="sources" db=2.0ms idle=79.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] 20:10:12.031 [debug] QUERY OK source="tasks" db=0.3ms idle=85.2ms 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"] 20:10:12.032 [info] Sent 200 in 135ms 20:10:19.163 [info] {"source":"oban","duration":10479,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:10:41.192 [info] {"args":{"id":10},"id":226799,"meta":{},"system_time":1768036241191812277,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:10:41.198 [debug] QUERY OK source="sources" db=6.1ms idle=1744.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] 20:10:41.200 [debug] QUERY OK source="settings" db=0.8ms idle=1019.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:41.201 [debug] QUERY OK source="media_profiles" db=0.7ms idle=752.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] 20:10:41.205 [debug] QUERY OK source="settings" db=3.6ms queue=0.1ms idle=18.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:41.205 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 20:10:41.206 [debug] QUERY OK source="settings" db=0.2ms idle=14.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:41.206 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:10:41.602 [debug] QUERY OK source="media_items" db=3.2ms 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."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "g0z7tR6KdIE", "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", ...] 20:10:41.606 [debug] QUERY OK source="settings" db=0.3ms idle=406.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:41.607 [debug] QUERY OK source="settings" db=0.3ms idle=405.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:41.607 [debug] Running yt-dlp command for action: get_media_attributes 20:10:41.609 [debug] QUERY OK source="settings" db=0.2ms idle=403.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:41.609 [debug] QUERY OK source="settings" db=0.1ms idle=403.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:10:41.610 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:10:41.610 [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/26/aa266c0f1a7b065de76cdf8a21a427d84d4b5d454f76a88338b4003e490b5c3e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:10:47.190 [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/26/aa266c0f1a7b065de76cdf8a21a427d84d4b5d454f76a88338b4003e490b5c3e.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. 20:10:47.191 [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} 20:10:47.192 [debug] QUERY OK source="media_items" db=1.1ms idle=1744.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] 20:10:47.196 [debug] QUERY OK source="tasks" db=0.4ms idle=1002.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226823, 10, ~U[2026-01-10 09:10:47Z], ~U[2026-01-10 09:10:47Z]] 20:10:47.197 [info] {"args":{"id":10},"id":226799,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":6005299,"event":"job:stop","queue_time":135241,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:10:49.174 [info] {"source":"oban","duration":10451,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:11:00.025 [info] {"source":"oban","duration":389,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:11:05.240 [info] {"args":{"id":6},"id":226800,"meta":{},"system_time":1768036265240505002,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:11:05.241 [debug] QUERY OK source="sources" db=0.4ms idle=793.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] 20:11:05.242 [debug] QUERY OK source="settings" db=0.7ms idle=794.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:11:05.243 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=795.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] 20:11:05.244 [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 [] 20:11:05.244 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 20:11:05.245 [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 [] 20:11:05.246 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:11:05.666 [debug] QUERY OK source="media_items" db=3.3ms idle=421.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "cIrfWaWIByQ", "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", ...] 20:11:05.674 [debug] QUERY OK source="media_items" db=3.9ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:11:05.680 [debug] QUERY OK source="tasks" db=1.1ms idle=433.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226824, 6, ~U[2026-01-10 09:11:05Z], ~U[2026-01-10 09:11:05Z]] 20:11:05.682 [info] {"args":{"id":6},"id":226800,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":440184,"event":"job:stop","queue_time":572528,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:11:07.248 [info] {"args":{"id":24},"id":226801,"meta":{},"system_time":1768036267248331413,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:11:07.249 [debug] QUERY OK source="sources" db=0.7ms idle=1566.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] 20:11:07.250 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1560.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:11:07.251 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms 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] 20:11:07.252 [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 [] 20:11:07.253 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 20:11:07.253 [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 [] 20:11:07.254 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:11:07.651 [debug] QUERY OK source="media_items" db=2.9ms queue=0.1ms idle=398.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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", ...] 20:11:07.657 [debug] QUERY OK source="media_items" db=1.2ms idle=405.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")))) [24] 20:11:07.661 [debug] QUERY OK source="tasks" db=0.6ms idle=406.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226825, 24, ~U[2026-01-10 09:11:07Z], ~U[2026-01-10 09:11:07Z]] 20:11:07.662 [info] {"args":{"id":24},"id":226801,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":412973,"event":"job:stop","queue_time":653443,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:11:12.179 [info] GET / 20:11:12.179 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:11:12.180 [debug] QUERY OK source="settings" db=0.4ms idle=927.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:11:12.180 [debug] QUERY OK source="media_profiles" db=0.2ms idle=733.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:11:12.181 [debug] QUERY OK source="sources" db=0.2ms idle=733.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:11:12.241 [debug] QUERY OK source="media_items" db=59.2ms idle=733.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:11:12.252 [debug] QUERY OK source="media_items" db=10.8ms queue=0.1ms idle=793.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:11:12.254 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=72.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:11:12.254 [debug] QUERY OK source="settings" db=0.4ms idle=72.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:11:12.255 [debug] QUERY OK source="settings" db=0.3ms idle=14.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:11:12.262 [debug] QUERY OK source="media_items" db=4.7ms idle=4.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)) [] 20:11:12.264 [debug] QUERY OK source="media_items" db=1.5ms idle=8.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] 20:11:12.266 [debug] QUERY OK source="sources" db=1.0ms 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 (?,?,?)) [12, 15, 6] 20:11:12.335 [debug] QUERY OK source="media_items" db=63.2ms 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"))) [] 20:11:12.338 [debug] QUERY OK source="media_items" db=1.5ms queue=0.1ms idle=80.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] 20:11:12.340 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=77.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" IN (?,?)) [27, 5] 20:11:12.347 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=82.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"] 20:11:12.349 [info] Sent 200 in 170ms 20:11:19.195 [info] {"source":"oban","duration":20244,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:11:49.208 [info] {"source":"oban","duration":12340,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:12:00.026 [info] {"source":"oban","duration":426,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:12:12.493 [info] GET / 20:12:12.493 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:12:12.495 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=1047.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:12:12.496 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=1048.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:12:12.497 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=74.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:12:12.503 [debug] QUERY OK source="media_items" db=5.2ms queue=0.2ms idle=50.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:12:12.513 [debug] QUERY OK source="media_items" db=9.5ms queue=0.1ms idle=55.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:12:12.514 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=18.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:12:12.515 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=18.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:12:12.516 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=19.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:12:12.523 [debug] QUERY OK source="media_items" db=5.2ms idle=15.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 (NOT (m0."media_filepath" IS NULL)) [] 20:12:12.525 [debug] QUERY OK source="media_items" db=1.3ms 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 INNER 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] 20:12:12.528 [debug] QUERY OK source="sources" db=0.8ms 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" IN (?,?,?)) [12, 15, 6] 20:12:12.571 [debug] QUERY OK source="media_items" db=36.5ms idle=19.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:12.574 [debug] QUERY OK source="media_items" db=1.4ms queue=0.1ms idle=55.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:12:12.575 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=51.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" IN (?,?)) [27, 5] 20:12:12.581 [debug] QUERY OK source="tasks" db=0.4ms idle=55.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"] 20:12:12.583 [info] Sent 200 in 89ms 20:12:19.231 [info] {"source":"oban","duration":22268,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:12:48.548 [info] {"args":{"id":21},"id":226802,"meta":{},"system_time":1768036368548137374,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:12:48.555 [debug] QUERY OK source="sources" db=6.8ms idle=101.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] 20:12:48.561 [debug] QUERY OK source="settings" db=5.9ms idle=108.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:12:48.568 [debug] QUERY OK source="media_profiles" db=6.6ms idle=114.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] 20:12:48.570 [debug] QUERY OK source="settings" db=1.3ms idle=28.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:12:48.570 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 20:12:48.571 [debug] QUERY OK source="settings" db=0.3ms idle=22.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:12:48.571 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:12:49.186 [debug] QUERY OK source="media_items" db=4.0ms queue=0.1ms idle=626.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "9t1DPHAoHyw", "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", ...] 20:12:49.197 [debug] QUERY OK source="media_items" db=7.3ms idle=628.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] 20:12:49.201 [debug] QUERY OK source="tasks" db=1.0ms idle=629.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226826, 21, ~U[2026-01-10 09:12:49Z], ~U[2026-01-10 09:12:49Z]] 20:12:49.202 [info] {"args":{"id":21},"id":226802,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":653533,"event":"job:stop","queue_time":443756,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:12:49.253 [info] {"source":"oban","duration":21589,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:12:59.593 [info] {"args":{"id":17},"id":226803,"meta":{},"system_time":1768036379593568612,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:12:59.595 [debug] QUERY OK source="sources" db=0.8ms idle=1146.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] 20:12:59.596 [debug] QUERY OK source="settings" db=1.1ms queue=0.1ms idle=1147.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:12:59.597 [debug] QUERY OK source="media_profiles" db=0.5ms 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] 20:12:59.598 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:12:59.598 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 20:12:59.599 [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 [] 20:12:59.599 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:12:59.919 [debug] QUERY OK source="media_items" db=1.8ms idle=322.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "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", "e3XOdq86shM", ...] 20:12:59.927 [debug] QUERY OK source="media_items" db=5.5ms 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")))) [17] 20:12:59.932 [debug] QUERY OK source="tasks" db=1.0ms queue=0.1ms idle=332.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226827, 17, ~U[2026-01-10 09:12:59Z], ~U[2026-01-10 09:12:59Z]] 20:12:59.934 [info] {"args":{"id":17},"id":226803,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":339279,"event":"job:stop","queue_time":704808,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:13:00.027 [info] {"source":"oban","duration":421,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:13:12.701 [info] GET / 20:13:12.702 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:13:12.703 [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 [] 20:13:12.704 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=1255.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:13:12.705 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1256.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:13:12.767 [debug] QUERY OK source="media_items" db=62.1ms idle=1079.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:13:12.771 [debug] QUERY OK source="media_items" db=3.5ms idle=139.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:13:12.772 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms 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 [] 20:13:12.773 [debug] QUERY OK source="settings" db=0.3ms idle=69.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:13:12.776 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=70.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:13:12.781 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:13:12.782 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=10.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)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:13:12.785 [debug] QUERY OK source="sources" db=0.8ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:13:12.828 [debug] QUERY OK source="media_items" db=36.5ms idle=17.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"))) [] 20:13:12.832 [debug] QUERY OK source="media_items" db=3.2ms queue=0.2ms idle=53.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] 20:13:12.835 [debug] QUERY OK source="sources" db=0.6ms queue=0.2ms idle=52.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" IN (?,?)) [27, 5] 20:13:12.837 [debug] QUERY OK source="tasks" db=0.5ms idle=53.9ms 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"] 20:13:12.838 [info] Sent 200 in 136ms 20:13:19.265 [info] {"source":"oban","duration":10908,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:13:49.287 [info] {"source":"oban","duration":21148,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:13:49.756 [info] {"args":{"id":16},"id":226804,"meta":{},"system_time":1768036429756214300,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:13:49.757 [debug] QUERY OK source="sources" db=0.8ms idle=1309.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] 20:13:49.766 [debug] QUERY OK source="settings" db=8.5ms queue=0.1ms idle=1016.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:13:49.768 [debug] QUERY OK source="media_profiles" db=1.7ms queue=0.1ms idle=479.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] 20:13:49.769 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=23.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:13:49.769 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 20:13:49.770 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:13:49.770 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:13:50.173 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=411.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, "9T4hx4KjyQ8", "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", ...] 20:13:50.180 [debug] QUERY OK source="media_items" db=2.6ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:13:50.183 [debug] QUERY OK source="tasks" db=0.4ms idle=412.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226828, 16, ~U[2026-01-10 09:13:50Z], ~U[2026-01-10 09:13:50Z]] 20:13:50.184 [info] {"args":{"id":16},"id":226804,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":427550,"event":"job:stop","queue_time":655450,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:13:50.755 [info] {"args":{"id":9},"id":226805,"meta":{},"system_time":1768036430755711378,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:13:50.756 [debug] QUERY OK source="sources" db=0.3ms idle=572.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" = ?) [9] 20:13:50.757 [debug] QUERY OK source="settings" db=0.3ms idle=572.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:13:50.757 [debug] QUERY OK source="media_profiles" db=0.3ms idle=565.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] 20:13:50.758 [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 [] 20:13:50.758 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 20:13:50.759 [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 [] 20:13:50.759 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:13:51.157 [debug] QUERY OK source="media_items" db=3.4ms idle=396.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, "16b4SEeZ45I", "el_J4DE8WnA", "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", ...] 20:13:51.164 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms idle=404.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] 20:13:51.168 [debug] QUERY OK source="tasks" db=0.5ms idle=408.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226829, 9, ~U[2026-01-10 09:13:51Z], ~U[2026-01-10 09:13:51Z]] 20:13:51.169 [info] {"args":{"id":9},"id":226805,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":412580,"event":"job:stop","queue_time":727225,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:14:00.028 [info] {"source":"oban","duration":450,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:14:12.942 [info] GET / 20:14:12.942 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:14:12.944 [debug] QUERY OK source="settings" db=0.6ms queue=0.3ms idle=1132.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:12.945 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=497.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:14:12.946 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=498.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:14:12.977 [debug] QUERY OK source="media_items" db=30.6ms queue=0.1ms idle=499.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:14:12.981 [debug] QUERY OK source="media_items" db=3.3ms queue=0.2ms idle=164.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:14:12.982 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=37.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:12.983 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=37.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:12.985 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=38.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:12.992 [debug] QUERY OK source="media_items" db=5.3ms 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 (m0."media_filepath" IS NULL)) [] 20:14:12.994 [debug] QUERY OK source="media_items" db=1.2ms queue=0.2ms idle=11.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:14:12.996 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:14:13.040 [debug] QUERY OK source="media_items" db=35.3ms idle=21.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:13.043 [debug] QUERY OK source="media_items" db=2.0ms queue=0.2ms idle=55.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:14:13.044 [debug] QUERY OK source="sources" db=0.4ms idle=51.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] 20:14:13.050 [debug] QUERY OK source="tasks" db=0.3ms idle=55.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"] 20:14:13.052 [info] Sent 200 in 109ms 20:14:15.830 [info] {"args":{"id":20},"id":226806,"meta":{},"system_time":1768036455830379111,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:14:15.834 [debug] QUERY OK source="sources" db=3.4ms queue=0.2ms idle=1383.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] 20:14:15.836 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1387.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:15.836 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1017.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] 20:14:15.840 [debug] QUERY OK source="settings" db=3.2ms idle=14.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:15.840 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 20:14:15.841 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:14:15.841 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:14:16.299 [debug] QUERY OK source="media_items" db=3.4ms queue=0.1ms idle=460.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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", ...] 20:14:16.308 [debug] QUERY OK source="media_items" db=4.0ms idle=467.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] 20:14:16.312 [debug] QUERY OK source="tasks" db=0.7ms idle=469.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226830, 20, ~U[2026-01-10 09:14:16Z], ~U[2026-01-10 09:14:16Z]] 20:14:16.313 [info] {"args":{"id":20},"id":226806,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":481866,"event":"job:stop","queue_time":637838,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:14:19.299 [info] {"source":"oban","duration":10927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:14:25.861 [info] {"args":{"id":7},"id":226811,"meta":{},"system_time":1768036465861349740,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:14:25.862 [debug] QUERY OK source="sources" db=0.5ms idle=414.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] 20:14:25.863 [debug] QUERY OK source="settings" db=0.9ms idle=415.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:25.864 [debug] QUERY OK source="media_profiles" db=0.7ms idle=416.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] 20:14:25.865 [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 [] 20:14:25.865 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 20:14:25.866 [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 [] 20:14:25.866 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:14:26.273 [debug] QUERY OK source="media_items" db=3.9ms idle=406.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "EzCiEv1IqiA", "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", ...] 20:14:26.286 [debug] QUERY OK source="media_items" db=8.8ms queue=0.1ms idle=413.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] 20:14:26.296 [debug] QUERY OK source="tasks" db=1.0ms idle=429.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226831, 8350, ~U[2026-01-10 09:14:26Z], ~U[2026-01-10 09:14:26Z]] 20:14:26.304 [info] {"args":{"id":8350},"id":226831,"meta":{},"system_time":1768036466304054322,"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"]} 20:14:26.305 [debug] QUERY OK source="media_items" db=0.4ms idle=10.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" = ?) [8350] 20:14:26.305 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:14:26.306 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=9.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226832, 8380, ~U[2026-01-10 09:14:26Z], ~U[2026-01-10 09:14:26Z]] 20:14:26.307 [debug] QUERY OK source="sources" db=0.9ms queue=0.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" = ?) [7] 20:14:26.308 [debug] QUERY OK source="media_profiles" db=1.0ms 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] 20:14:26.310 [debug] QUERY OK source="media_items" db=0.9ms idle=3.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] 20:14:26.312 [debug] QUERY OK source="media_metadata" db=0.4ms 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" = ?) [8350] 20:14:26.315 [debug] QUERY OK source="media_profiles" db=1.8ms queue=0.1ms 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] 20:14:26.316 [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 [] 20:14:26.316 [info] {"args":{"id":8380},"id":226832,"meta":{},"system_time":1768036466316769552,"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"]} 20:14:26.317 [debug] QUERY OK source="media_items" db=0.3ms 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" = ?) [8380] 20:14:26.317 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:14:26.317 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:14:26.317 [debug] Running yt-dlp command for action: get_downloadable_status 20:14:26.318 [debug] QUERY OK source="tasks" db=3.1ms idle=2.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226833, 8401, ~U[2026-01-10 09:14:26Z], ~U[2026-01-10 09:14:26Z]] 20:14:26.318 [debug] QUERY OK source="sources" db=0.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" = ?) [7] 20:14:26.319 [debug] QUERY OK source="settings" db=0.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 [] 20:14:26.319 [debug] QUERY OK source="media_profiles" db=1.0ms 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] 20:14:26.320 [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 [] 20:14:26.321 [debug] QUERY OK source="media_items" db=1.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 [8380] 20:14:26.321 [debug] QUERY OK source="settings" db=1.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 [] 20:14:26.321 [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/6f/c7/6fc7aa8b4c50a2388765e7cda3f7d9da64cd1eaa366d4dd169422e01a922c645.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:14:26.322 [debug] QUERY OK source="media_metadata" db=0.1ms 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" = ?) [8380] 20:14:26.323 [debug] QUERY OK source="tasks" db=0.5ms idle=1.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226834, 8418, ~U[2026-01-10 09:14:26Z], ~U[2026-01-10 09:14:26Z]] 20:14:26.323 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.2ms 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] 20:14:26.325 [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 [] 20:14:26.325 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:14:26.326 [debug] Running yt-dlp command for action: get_downloadable_status 20:14:26.327 [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 [] 20:14:26.328 [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 [] 20:14:26.328 [debug] QUERY OK source="tasks" db=0.9ms idle=2.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226835, 7, ~U[2026-01-10 09:14:26Z], ~U[2026-01-10 09:14:26Z]] 20:14:26.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 [] 20:14:26.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/98/f1/98f1307ed4d374b3994d4987d6b10851d878fb76821b171cca438a195408d0fd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:14:26.329 [info] {"args":{"id":7},"id":226811,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":466977,"event":"job:stop","queue_time":581127,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:14:32.013 [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/98/f1/98f1307ed4d374b3994d4987d6b10851d878fb76821b171cca438a195408d0fd.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 20:14:32.016 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=567.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.017 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=569.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.018 [debug] Running yt-dlp command for action: get_downloadable_status 20:14:32.020 [debug] QUERY OK source="settings" db=0.4ms idle=572.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.021 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=573.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.022 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=143.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.023 [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/1d/86/1d860e1c11d8e6f3d911aaf650cbbd05a743b4c328e3ab07a5e0dbb6e4129e52.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:14:32.042 [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/6f/c7/6fc7aa8b4c50a2388765e7cda3f7d9da64cd1eaa366d4dd169422e01a922c645.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 20:14:32.043 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=27.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.044 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=27.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.045 [debug] Running yt-dlp command for action: get_downloadable_status 20:14:32.047 [debug] QUERY OK source="settings" db=0.3ms idle=26.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.048 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=26.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.048 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=25.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:32.049 [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/a0/5b/a05b82bef229f7b03d9e94432486095287d3f662fd488ab8573793615c046712.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:14:37.333 [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/a0/5b/a05b82bef229f7b03d9e94432486095287d3f662fd488ab8573793615c046712.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 20:14:37.333 [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" 20:14:37.334 [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" 20:14:37.335 [info] {"args":{"id":8350},"id":226831,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11030166,"event":"job:stop","queue_time":301135,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:14:37.343 [info] {"args":{"id":8401},"id":226833,"meta":{},"system_time":1768036477342801814,"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"]} 20:14:37.343 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1895.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" = ?) [8401] 20:14:37.344 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:14:37.345 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1453.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] 20:14:37.346 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=450.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] 20:14:37.347 [debug] QUERY OK source="media_items" db=0.5ms queue=0.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 [8401] 20:14:37.349 [debug] QUERY OK source="media_metadata" db=0.1ms 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" = ?) [8401] 20:14:37.350 [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] 20:14:37.351 [debug] QUERY OK source="settings" db=0.1ms 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 [] 20:14:37.351 [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 [] 20:14:37.352 [debug] Running yt-dlp command for action: get_downloadable_status 20:14:37.353 [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 [] 20:14:37.354 [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 [] 20:14:37.354 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:14:37.355 [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/87/138741c46afcefcf54bb5334c556cff9dd3a308975ee87a94819f1797d1dcc89.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:14:37.759 [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/1d/86/1d860e1c11d8e6f3d911aaf650cbbd05a743b4c328e3ab07a5e0dbb6e4129e52.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 20:14:37.759 [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" 20:14:37.760 [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" 20:14:37.761 [info] {"args":{"id":8380},"id":226832,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11443763,"event":"job:stop","queue_time":312673,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:14:37.770 [info] {"args":{"id":8418},"id":226834,"meta":{},"system_time":1768036477770038534,"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"]} 20:14:37.771 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=416.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" = ?) [8418] 20:14:37.771 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:14:37.773 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=417.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] 20:14:37.774 [debug] QUERY OK source="media_profiles" db=0.4ms idle=418.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] 20:14:37.774 [debug] QUERY OK source="media_items" db=0.5ms 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 [8418] 20:14:37.776 [debug] QUERY OK source="media_metadata" db=0.1ms idle=5.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" = ?) [8418] 20:14:37.776 [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] 20:14:37.777 [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 [] 20:14:37.777 [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 [] 20:14:37.778 [debug] Running yt-dlp command for action: get_downloadable_status 20:14:37.780 [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 [] 20:14:37.780 [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 [] 20:14:37.781 [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 [] 20:14:37.782 [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/e7/dc/e7dccb7ad98ad2f3c2cb03fd73dbd42fc5255d641f70d043d3d8dd2b7ee03465.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:14:42.810 [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/87/138741c46afcefcf54bb5334c556cff9dd3a308975ee87a94819f1797d1dcc89.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 20:14:42.812 [debug] QUERY OK source="settings" db=0.3ms queue=0.3ms idle=1364.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:42.813 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=1365.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:42.814 [debug] Running yt-dlp command for action: get_downloadable_status 20:14:42.816 [debug] QUERY OK source="settings" db=0.2ms idle=1368.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:42.816 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1368.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:42.817 [debug] QUERY OK source="settings" db=0.2ms idle=907.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:42.817 [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/99/97/9997c38546e929b61cb0192675a976a23a15c68426c36ac1f83874c2e03e1de8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:14:43.227 [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/e7/dc/e7dccb7ad98ad2f3c2cb03fd73dbd42fc5255d641f70d043d3d8dd2b7ee03465.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 20:14:43.229 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=415.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:43.230 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=413.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:43.231 [debug] Running yt-dlp command for action: get_downloadable_status 20:14:43.232 [debug] QUERY OK source="settings" db=0.2ms idle=415.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:43.233 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=415.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:43.233 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=321.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:43.233 [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/b8/c4/b8c4bb1dd925050a6d2950dc028612f3585ff336e4e805ddf9f55086f5feff0f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:14:48.810 [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/99/97/9997c38546e929b61cb0192675a976a23a15c68426c36ac1f83874c2e03e1de8.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 20:14:48.810 [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" 20:14:48.811 [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" 20:14:48.812 [info] {"args":{"id":8401},"id":226833,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11468358,"event":"job:stop","queue_time":11341265,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:14:48.899 [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/b8/c4/b8c4bb1dd925050a6d2950dc028612f3585ff336e4e805ddf9f55086f5feff0f.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 20:14:48.900 [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" 20:14:48.900 [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" 20:14:48.901 [info] {"args":{"id":8418},"id":226834,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11130356,"event":"job:stop","queue_time":11768206,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:14:49.310 [info] {"source":"oban","duration":9653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:14:57.965 [info] {"args":{"id":11},"id":226812,"meta":{},"system_time":1768036497964878962,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:14:57.966 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=1517.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" = ?) [11] 20:14:57.967 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1519.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:14:57.969 [debug] QUERY OK source="media_profiles" db=1.0ms 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] 20:14:57.970 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:14:57.970 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 20:14:57.971 [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 [] 20:14:57.971 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:14:58.523 [debug] QUERY OK source="media_items" db=5.0ms idle=552.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, "VSW2XDMy1n4", "IAT_Zf2PCL4", "-xT57w8ZS8U", "EdS_OqCQSew", "FwEJK_d8y8c", "X07XF175FSA", "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", ...] 20:14:58.537 [debug] QUERY OK source="media_items" db=10.2ms idle=559.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] 20:14:58.545 [debug] QUERY OK source="tasks" db=1.0ms idle=20.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226836, 11, ~U[2026-01-10 09:14:58Z], ~U[2026-01-10 09:14:58Z]] 20:14:58.547 [info] {"args":{"id":11},"id":226812,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":580317,"event":"job:stop","queue_time":253071,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:15:00.029 [info] {"source":"oban","duration":268,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:15:13.178 [info] GET / 20:15:13.179 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:15:13.180 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1187.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:15:13.180 [debug] QUERY OK source="media_profiles" db=0.2ms idle=732.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:15:13.181 [debug] QUERY OK source="sources" db=0.2ms idle=733.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:15:13.240 [debug] QUERY OK source="media_items" db=59.3ms idle=733.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:15:13.243 [debug] QUERY OK source="media_items" db=3.1ms idle=247.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:15:13.244 [debug] QUERY OK source="settings" db=0.1ms idle=64.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:15:13.244 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:15:13.245 [debug] QUERY OK source="settings" db=0.2ms idle=64.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:15:13.249 [debug] QUERY OK source="media_items" db=3.4ms idle=5.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)) [] 20:15:13.250 [debug] QUERY OK source="media_items" db=0.6ms idle=5.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:15:13.251 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:15:13.287 [debug] QUERY OK source="media_items" db=34.0ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:13.290 [debug] QUERY OK source="media_items" db=2.3ms queue=0.1ms idle=42.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:15:13.292 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=42.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] 20:15:13.300 [debug] QUERY OK source="tasks" db=0.3ms idle=49.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"] 20:15:13.302 [info] Sent 200 in 123ms 20:15:16.011 [info] {"args":{"id":25},"id":226813,"meta":{},"system_time":1768036516011061696,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:15:16.015 [debug] QUERY OK source="sources" db=3.4ms queue=0.1ms idle=1564.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] 20:15:16.016 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1568.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:15:16.017 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=1017.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] 20:15:16.021 [debug] QUERY OK source="settings" db=3.0ms 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 [] 20:15:16.021 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 20:15:16.021 [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 [] 20:15:16.022 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:15:16.355 [debug] QUERY OK source="media_items" db=1.3ms idle=338.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"] 20:15:16.356 [debug] QUERY OK source="media_items" db=0.9ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:15:16.360 [debug] QUERY OK source="tasks" db=0.8ms idle=337.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226837, 25, ~U[2026-01-10 09:15:16Z], ~U[2026-01-10 09:15:16Z]] 20:15:16.361 [info] {"args":{"id":25},"id":226813,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":349605,"event":"job:stop","queue_time":468820,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:15:19.322 [info] {"source":"oban","duration":11249,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:15:35.057 [info] {"args":{"id":2},"id":226814,"meta":{},"system_time":1768036535057079324,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:15:35.058 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1011.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] 20:15:35.059 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=611.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:15:35.059 [debug] QUERY OK source="media_profiles" db=0.2ms idle=611.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] 20:15:35.060 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:15:35.060 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 20:15:35.061 [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 [] 20:15:35.061 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:15:35.602 [debug] QUERY OK source="media_items" db=3.3ms 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 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "Usk1j8IT7ww", "eIpWmOMdYMA", "M08XtzkUg2A", "XC32_9oNoeQ", "gVqE98_flmc", "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", ...] 20:15:35.612 [debug] QUERY OK source="media_items" db=6.6ms idle=546.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] 20:15:35.616 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=554.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226838, 2, ~U[2026-01-10 09:15:35Z], ~U[2026-01-10 09:15:35Z]] 20:15:35.617 [info] {"args":{"id":2},"id":226814,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":559404,"event":"job:stop","queue_time":395894,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:15:49.344 [info] {"source":"oban","duration":21024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:16:00.031 [info] {"source":"oban","duration":1340,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:16:13.417 [info] GET / 20:16:13.417 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:16:13.418 [debug] QUERY OK source="settings" db=0.7ms idle=1970.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:16:13.419 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1971.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:16:13.419 [debug] QUERY OK source="sources" db=0.4ms idle=1972.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:16:13.481 [debug] QUERY OK source="media_items" db=60.9ms idle=1266.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:16:13.493 [debug] QUERY OK source="media_items" db=12.1ms idle=323.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:16:13.494 [debug] QUERY OK source="settings" db=0.4ms idle=75.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:16:13.494 [debug] QUERY OK source="settings" db=0.3ms idle=75.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:16:13.495 [debug] QUERY OK source="settings" db=0.4ms idle=75.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:16:13.506 [debug] QUERY OK source="media_items" db=9.3ms idle=16.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)) [] 20:16:13.508 [debug] QUERY OK source="media_items" db=1.5ms queue=0.1ms idle=13.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] 20:16:13.510 [debug] QUERY OK source="sources" db=0.7ms idle=15.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" IN (?,?,?)) [12, 15, 6] 20:16:13.554 [debug] QUERY OK source="media_items" db=37.9ms idle=21.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"))) [] 20:16:13.562 [debug] QUERY OK source="media_items" db=6.1ms queue=0.2ms idle=59.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] 20:16:13.563 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=56.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] 20:16:13.569 [debug] QUERY OK source="tasks" db=0.8ms idle=59.5ms 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"] 20:16:13.570 [info] Sent 200 in 153ms 20:16:19.368 [info] {"source":"oban","duration":23522,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:16:40.237 [info] {"args":{"id":1},"id":226815,"meta":{},"system_time":1768036600236975073,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:16:40.237 [debug] QUERY OK source="sources" db=0.3ms idle=790.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] 20:16:40.238 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=790.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:16:40.242 [debug] QUERY OK source="media_profiles" db=3.1ms idle=791.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] 20:16:40.245 [debug] QUERY OK source="settings" db=3.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 [] 20:16:40.245 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 20:16:40.246 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:16:40.246 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:16:40.590 [debug] QUERY OK source="media_items" db=4.6ms idle=347.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "W4asNKhu7Nk", "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", ...] 20:16:40.600 [debug] QUERY OK source="media_items" db=5.8ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:16:40.606 [debug] QUERY OK source="tasks" db=1.1ms idle=358.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226839, 1, ~U[2026-01-10 09:16:40Z], ~U[2026-01-10 09:16:40Z]] 20:16:40.608 [info] {"args":{"id":1},"id":226815,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":369883,"event":"job:stop","queue_time":403617,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:16:49.264 [info] {"args":{"id":19},"id":226816,"meta":{},"system_time":1768036609264484144,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:16:49.265 [debug] QUERY OK source="sources" db=0.8ms idle=817.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] 20:16:49.266 [debug] QUERY OK source="settings" db=0.7ms idle=818.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:16:49.268 [debug] QUERY OK source="media_profiles" db=0.9ms idle=819.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] 20:16:49.269 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:16:49.269 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 20:16:49.270 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:16:49.270 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:16:49.379 [info] {"source":"oban","duration":10504,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:16:49.612 [debug] QUERY OK source="media_items" db=2.0ms idle=343.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"] 20:16:49.614 [debug] QUERY OK source="media_items" db=1.0ms idle=345.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] 20:16:49.618 [debug] QUERY OK source="tasks" db=1.3ms queue=0.1ms idle=237.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226840, 19, ~U[2026-01-10 09:16:49Z], ~U[2026-01-10 09:16:49Z]] 20:16:49.619 [info] {"args":{"id":19},"id":226816,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":354184,"event":"job:stop","queue_time":427536,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:17:00.032 [info] {"source":"oban","duration":502,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:17:13.694 [info] GET / 20:17:13.694 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:17:13.695 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=373.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:17:13.696 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=248.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:17:13.696 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=248.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:17:13.728 [debug] QUERY OK source="media_items" db=31.3ms queue=0.1ms idle=249.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:17:13.732 [debug] QUERY OK source="media_items" db=3.2ms queue=0.2ms idle=281.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:17:13.733 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=37.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:17:13.734 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=37.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:17:13.735 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=38.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:17:13.742 [debug] QUERY OK source="media_items" db=4.3ms idle=9.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)) [] 20:17:13.743 [debug] QUERY OK source="media_items" db=0.8ms queue=0.2ms idle=10.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)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:17:13.745 [debug] QUERY OK source="sources" db=0.5ms 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" IN (?,?,?)) [12, 15, 6] 20:17:13.788 [debug] QUERY OK source="media_items" db=36.3ms idle=18.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:17:13.792 [debug] QUERY OK source="media_items" db=2.0ms queue=0.2ms idle=53.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] 20:17:13.794 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=51.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] 20:17:13.801 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=56.5ms 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"] 20:17:13.803 [info] Sent 200 in 108ms 20:17:19.404 [info] {"source":"oban","duration":23171,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:17:41.414 [info] {"args":{"id":26},"id":226817,"meta":{},"system_time":1768036661414142445,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:17:41.415 [debug] QUERY OK source="sources" db=0.5ms idle=1966.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" = ?) [26] 20:17:41.418 [debug] QUERY OK source="settings" db=2.6ms queue=0.1ms idle=1018.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:17:41.419 [debug] QUERY OK source="media_profiles" db=0.7ms idle=970.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] 20:17:41.419 [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 [] 20:17:41.419 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 20:17:41.420 [debug] QUERY OK source="settings" db=0.1ms 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 [] 20:17:41.420 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:17:41.902 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=482.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, "UO8_-B-383w", "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", ...] 20:17:41.910 [debug] QUERY OK source="media_items" db=4.0ms queue=0.1ms idle=487.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")))) [26] 20:17:41.914 [debug] QUERY OK source="tasks" db=0.6ms idle=492.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226841, 26, ~U[2026-01-10 09:17:41Z], ~U[2026-01-10 09:17:41Z]] 20:17:41.915 [info] {"args":{"id":26},"id":226817,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":500275,"event":"job:stop","queue_time":196268,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:17:49.416 [info] {"source":"oban","duration":11365,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:17:53.438 [info] {"args":{"id":15},"id":226818,"meta":{},"system_time":1768036673437935529,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:17:53.439 [debug] QUERY OK source="sources" db=0.7ms idle=1989.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] 20:17:53.440 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1012.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:17:53.442 [debug] QUERY OK source="media_profiles" db=1.1ms idle=992.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] 20:17:53.443 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:17:53.443 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 20:17:53.444 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:17:53.444 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:17:53.877 [debug] QUERY OK source="media_items" db=4.3ms idle=433.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, "OCnm1p7J38Q", "javP2Zg24jM", "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", ...] 20:17:53.887 [debug] QUERY OK source="media_items" db=8.3ms idle=438.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] 20:17:53.892 [debug] QUERY OK source="tasks" db=0.9ms idle=447.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226842, 15, ~U[2026-01-10 09:17:53Z], ~U[2026-01-10 09:17:53Z]] 20:17:53.893 [info] {"args":{"id":15},"id":226818,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":454404,"event":"job:stop","queue_time":222104,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:18:00.033 [info] {"source":"oban","duration":420,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:18:13.946 [info] GET / 20:18:13.946 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:18:13.947 [debug] QUERY OK source="settings" db=0.3ms idle=498.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:18:13.948 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=499.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:18:13.949 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=500.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:18:13.982 [debug] QUERY OK source="media_items" db=32.3ms queue=0.1ms idle=500.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:18:13.986 [debug] QUERY OK source="media_items" db=3.4ms queue=0.2ms idle=483.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:18:13.987 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=39.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:18:13.988 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=39.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:18:13.990 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=40.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:18:13.996 [debug] QUERY OK source="media_items" db=3.4ms idle=10.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)) [] 20:18:13.998 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=10.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:18:14.000 [debug] QUERY OK source="sources" db=0.7ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:18:14.072 [debug] QUERY OK source="media_items" db=65.4ms queue=0.1ms idle=18.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:18:14.075 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=82.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:18:14.076 [debug] QUERY OK source="sources" db=0.3ms idle=79.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 (?,?)) [27, 5] 20:18:14.080 [debug] QUERY OK source="tasks" db=0.4ms idle=80.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"] 20:18:14.081 [info] Sent 200 in 134ms 20:18:17.518 [info] {"args":{"id":3},"id":226819,"meta":{},"system_time":1768036697518358343,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:18:17.523 [debug] QUERY OK source="sources" db=3.7ms queue=0.1ms idle=70.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] 20:18:17.524 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=74.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:18:17.525 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms 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] 20:18:17.528 [debug] QUERY OK source="settings" db=2.7ms queue=0.1ms idle=14.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:18:17.528 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 20:18:17.529 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:18:17.529 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:18:17.967 [debug] QUERY OK source="media_items" db=2.8ms idle=441.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "rzQeUM-lMUY", "BkUHm95UvCw", "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", ...] 20:18:17.974 [debug] QUERY OK source="media_items" db=3.5ms idle=446.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] 20:18:17.988 [debug] QUERY OK source="tasks" db=11.2ms idle=447.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226843, 3, ~U[2026-01-10 09:18:17Z], ~U[2026-01-10 09:18:17Z]] 20:18:17.992 [info] {"args":{"id":3},"id":226819,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":470746,"event":"job:stop","queue_time":218493,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:18:19.428 [info] {"source":"oban","duration":11131,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:18:49.452 [info] {"source":"oban","duration":23076,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:18:51.629 [info] {"args":{"id":22},"id":226820,"meta":{},"system_time":1768036731629195683,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:18:51.631 [debug] QUERY OK source="sources" db=1.6ms queue=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 20:18:51.633 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:18:51.634 [debug] QUERY OK source="media_profiles" db=0.8ms 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] 20:18:51.636 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms 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 [] 20:18:51.636 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 20:18:51.636 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:18:51.637 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:18:51.947 [debug] QUERY OK source="media_items" db=1.5ms idle=314.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"] 20:18:51.949 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:18:51.949 [debug] QUERY OK source="settings" db=0.3ms idle=315.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:18:51.949 [debug] Running yt-dlp command for action: get_media_attributes 20:18:51.952 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:18:51.952 [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 [] 20:18:51.953 [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 [] 20:18:51.953 [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/3d/603d29b0154e8430ba04b60e34417181af1ab58ed520a3592ee3fee758911ad0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:18:56.687 [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/3d/603d29b0154e8430ba04b60e34417181af1ab58ed520a3592ee3fee758911ad0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 20:18:56.688 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 20:18:56.690 [debug] QUERY OK source="media_items" db=1.5ms idle=1239.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")))) [22] 20:18:56.695 [debug] QUERY OK source="tasks" db=1.4ms idle=1059.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226844, 22, ~U[2026-01-10 09:18:56Z], ~U[2026-01-10 09:18:56Z]] 20:18:56.697 [info] {"args":{"id":22},"id":226820,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5066630,"event":"job:stop","queue_time":945564,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:19:00.034 [info] {"source":"oban","duration":493,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:19:08.682 [info] {"args":{"id":18},"id":226821,"meta":{},"system_time":1768036748682156064,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:19:08.683 [debug] QUERY OK source="sources" db=1.2ms idle=234.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] 20:19:08.685 [debug] QUERY OK source="settings" db=0.8ms idle=235.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:19:08.685 [debug] QUERY OK source="media_profiles" db=0.6ms idle=236.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] 20:19:08.686 [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 [] 20:19:08.686 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 20:19:08.687 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:19:08.687 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:19:09.111 [debug] QUERY OK source="media_items" db=4.7ms idle=422.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "XCGRhxHrjWg", "fyWYr4PukJY", "-w4HeclDfgE", "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", ...] 20:19:09.121 [debug] QUERY OK source="media_items" db=6.3ms idle=430.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] 20:19:09.127 [debug] QUERY OK source="tasks" db=1.2ms idle=438.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226845, 18, ~U[2026-01-10 09:19:09Z], ~U[2026-01-10 09:19:09Z]] 20:19:09.128 [info] {"args":{"id":18},"id":226821,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":445058,"event":"job:stop","queue_time":280200,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:19:14.204 [info] GET / 20:19:14.204 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:19:14.206 [debug] QUERY OK source="settings" db=0.9ms idle=1756.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:19:14.206 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1757.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:19:14.206 [debug] QUERY OK source="sources" db=0.2ms idle=1757.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:19:14.270 [debug] QUERY OK source="media_items" db=63.2ms idle=1522.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:19:14.274 [debug] QUERY OK source="media_items" db=3.1ms queue=0.2ms idle=581.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:19:14.275 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=68.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:19:14.275 [debug] QUERY OK source="settings" db=0.1ms 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 [] 20:19:14.276 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:19:14.282 [debug] QUERY OK source="media_items" db=3.7ms queue=0.1ms idle=8.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 (NOT (m0."media_filepath" IS NULL)) [] 20:19:14.283 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=8.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:19:14.285 [debug] QUERY OK source="sources" db=0.6ms queue=0.2ms idle=9.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 (?,?,?)) [12, 15, 6] 20:19:14.328 [debug] QUERY OK source="media_items" db=36.3ms idle=16.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"))) [] 20:19:14.331 [debug] QUERY OK source="media_items" db=1.7ms queue=0.2ms idle=52.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] 20:19:14.333 [debug] QUERY OK source="sources" db=0.3ms idle=50.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] 20:19:14.336 [debug] QUERY OK source="tasks" db=0.4ms idle=52.2ms 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"] 20:19:14.337 [info] Sent 200 in 132ms 20:19:19.474 [info] {"source":"oban","duration":21299,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:19:49.497 [info] {"source":"oban","duration":22146,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:20:00.035 [info] {"source":"oban","duration":352,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:20:05.869 [info] {"args":{"id":23},"id":226822,"meta":{},"system_time":1768036805868880226,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:20:05.870 [debug] QUERY OK source="sources" db=0.8ms idle=420.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] 20:20:05.877 [debug] QUERY OK source="settings" db=6.5ms idle=422.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:05.880 [debug] QUERY OK source="media_profiles" db=2.3ms queue=0.1ms idle=429.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] 20:20:05.888 [debug] QUERY OK source="settings" db=6.9ms queue=0.2ms idle=20.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:05.888 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 20:20:05.889 [debug] QUERY OK source="settings" db=0.3ms idle=20.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:05.889 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:20:06.227 [debug] QUERY OK source="media_items" db=1.8ms 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."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"] 20:20:06.230 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=352.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")))) [23] 20:20:06.234 [debug] QUERY OK source="tasks" db=0.5ms idle=344.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226846, 23, ~U[2026-01-10 09:20:06Z], ~U[2026-01-10 09:20:06Z]] 20:20:06.235 [info] {"args":{"id":23},"id":226822,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":365780,"event":"job:stop","queue_time":419871,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:20:14.449 [info] GET / 20:20:14.449 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:20:14.450 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1001.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:14.451 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1002.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:20:14.452 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1003.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:20:14.483 [debug] QUERY OK source="media_items" db=30.6ms queue=0.1ms idle=1004.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:20:14.487 [debug] QUERY OK source="media_items" db=3.5ms idle=599.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:20:14.489 [debug] QUERY OK source="settings" db=0.3ms idle=37.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:14.489 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=37.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:14.491 [debug] QUERY OK source="settings" db=0.2ms idle=38.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:14.496 [debug] QUERY OK source="media_items" db=3.4ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) [] 20:20:14.497 [debug] QUERY OK source="media_items" db=0.6ms idle=9.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] 20:20:14.499 [debug] QUERY OK source="sources" db=0.3ms idle=9.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 (?,?,?)) [12, 15, 6] 20:20:14.542 [debug] QUERY OK source="media_items" db=35.5ms queue=0.1ms idle=17.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:20:14.545 [debug] QUERY OK source="media_items" db=1.9ms idle=52.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:20:14.547 [debug] QUERY OK source="sources" db=0.5ms idle=49.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" IN (?,?)) [27, 5] 20:20:14.553 [debug] QUERY OK source="tasks" db=0.3ms idle=55.1ms 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"] 20:20:14.555 [info] Sent 200 in 106ms 20:20:19.509 [info] {"source":"oban","duration":11139,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:20:48.001 [info] {"args":{"id":10},"id":226823,"meta":{},"system_time":1768036848000702814,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:20:48.002 [debug] QUERY OK source="sources" db=1.2ms idle=1553.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] 20:20:48.010 [debug] QUERY OK source="settings" db=7.1ms queue=0.1ms idle=1018.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:48.012 [debug] QUERY OK source="media_profiles" db=1.1ms queue=0.1ms idle=562.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] 20:20:48.019 [debug] QUERY OK source="settings" db=6.7ms idle=19.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:48.019 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 20:20:48.020 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:20:48.020 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:20:48.392 [debug] QUERY OK source="media_items" db=4.2ms idle=384.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, "g0z7tR6KdIE", "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", ...] 20:20:48.396 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:20:48.397 [debug] QUERY OK source="settings" db=0.6ms idle=384.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:48.397 [debug] Running yt-dlp command for action: get_media_attributes 20:20:48.399 [debug] QUERY OK source="settings" db=0.4ms idle=380.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:48.400 [debug] QUERY OK source="settings" db=0.2ms idle=379.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:20:48.401 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:20:48.401 [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/47/be/47be051b35c41a16a94b0139131e566d839821113fc5d3ce42a5f193b87db5a1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:20:49.531 [info] {"source":"oban","duration":21142,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:20:54.220 [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/47/be/47be051b35c41a16a94b0139131e566d839821113fc5d3ce42a5f193b87db5a1.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. 20:20:54.221 [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} 20:20:54.223 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=773.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] 20:20:54.227 [debug] QUERY OK source="tasks" db=0.5ms idle=777.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226847, 10, ~U[2026-01-10 09:20:54Z], ~U[2026-01-10 09:20:54Z]] 20:20:54.228 [info] {"args":{"id":10},"id":226823,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":6226500,"event":"job:stop","queue_time":803916,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:21:00.036 [info] {"source":"oban","duration":455,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:21:06.047 [info] {"args":{"id":6},"id":226824,"meta":{},"system_time":1768036866047038463,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:21:06.048 [debug] QUERY OK source="sources" db=0.6ms queue=0.2ms idle=599.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] 20:21:06.050 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=600.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:21:06.051 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=601.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] 20:21:06.052 [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 [] 20:21:06.052 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 20:21:06.053 [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 [] 20:21:06.053 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:21:06.464 [debug] QUERY OK source="media_items" db=2.7ms queue=0.1ms idle=412.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, "cIrfWaWIByQ", "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", ...] 20:21:06.472 [debug] QUERY OK source="media_items" db=2.5ms idle=419.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] 20:21:06.475 [debug] QUERY OK source="tasks" db=0.5ms idle=422.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226848, 6, ~U[2026-01-10 09:21:06Z], ~U[2026-01-10 09:21:06Z]] 20:21:06.476 [info] {"args":{"id":6},"id":226824,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":428995,"event":"job:stop","queue_time":370196,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:21:08.051 [info] {"args":{"id":24},"id":226825,"meta":{},"system_time":1768036868051557098,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:21:08.052 [debug] QUERY OK source="sources" db=0.4ms idle=1575.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] 20:21:08.053 [debug] QUERY OK source="settings" db=0.4ms idle=1567.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:21:08.054 [debug] QUERY OK source="media_profiles" db=1.5ms idle=1011.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] 20:21:08.055 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:21:08.055 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 20:21:08.056 [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 [] 20:21:08.056 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:21:08.430 [debug] QUERY OK source="media_items" db=6.0ms idle=371.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", ...] 20:21:08.434 [debug] QUERY OK source="media_items" db=2.0ms idle=379.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] 20:21:08.439 [debug] QUERY OK source="tasks" db=0.8ms idle=381.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226849, 24, ~U[2026-01-10 09:21:08Z], ~U[2026-01-10 09:21:08Z]] 20:21:08.440 [info] {"args":{"id":24},"id":226825,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":387795,"event":"job:stop","queue_time":392711,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:21:14.695 [info] GET / 20:21:14.695 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:21:14.696 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=1247.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:21:14.697 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=1248.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:21:14.697 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1249.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:21:14.726 [debug] QUERY OK source="media_items" db=27.6ms queue=0.1ms idle=635.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:21:14.730 [debug] QUERY OK source="media_items" db=3.5ms queue=0.2ms idle=277.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:21:14.731 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=33.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:21:14.732 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=34.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:21:14.734 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms 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 [] 20:21:14.739 [debug] QUERY OK source="media_items" db=3.5ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:21:14.740 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=9.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:21:14.742 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=10.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" IN (?,?,?)) [12, 15, 6] 20:21:14.785 [debug] QUERY OK source="media_items" db=36.6ms idle=16.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"))) [] 20:21:14.791 [debug] QUERY OK source="media_items" db=5.0ms queue=0.2ms idle=52.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:21:14.793 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=53.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] 20:21:14.798 [debug] QUERY OK source="tasks" db=0.4ms idle=57.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"] 20:21:14.800 [info] Sent 200 in 104ms 20:21:19.543 [info] {"source":"oban","duration":10783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:21:49.568 [info] {"source":"oban","duration":24029,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:22:00.037 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:22:19.579 [info] {"source":"oban","duration":10496,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:22:20.029 [info] GET / 20:22:20.029 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:22:20.029 [debug] QUERY OK source="settings" db=0.3ms idle=785.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:22:20.030 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.2ms idle=580.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:22:20.031 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=581.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:22:20.061 [debug] QUERY OK source="media_items" db=29.0ms queue=0.1ms idle=582.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:22:20.063 [debug] QUERY OK source="media_items" db=1.3ms queue=0.2ms idle=481.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:22:20.064 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=33.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:22:20.065 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=34.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:22:20.067 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=35.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:22:20.072 [debug] QUERY OK source="media_items" db=3.7ms idle=8.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 (NOT (m0."media_filepath" IS NULL)) [] 20:22:20.074 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=10.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] 20:22:20.076 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:22:20.096 [debug] QUERY OK source="media_items" db=11.9ms idle=18.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"))) [] 20:22:20.098 [debug] QUERY OK source="media_items" db=1.4ms idle=29.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:22:20.099 [debug] QUERY OK source="sources" db=0.5ms idle=26.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" IN (?,?)) [27, 5] 20:22:20.102 [debug] QUERY OK source="tasks" db=0.3ms idle=27.9ms 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"] 20:22:20.103 [info] Sent 200 in 74ms 20:22:49.330 [info] {"args":{"id":21},"id":226826,"meta":{},"system_time":1768036969330241512,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:22:49.335 [debug] QUERY OK source="sources" db=3.9ms idle=1881.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] 20:22:49.338 [debug] QUERY OK source="settings" db=3.2ms queue=0.1ms idle=1885.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:22:49.339 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1024.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] 20:22:49.340 [debug] QUERY OK source="settings" db=0.5ms idle=20.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:22:49.340 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 20:22:49.341 [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 [] 20:22:49.341 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:22:49.601 [info] {"source":"oban","duration":21038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:22:49.975 [debug] QUERY OK source="media_items" db=4.2ms idle=632.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, "9t1DPHAoHyw", "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", ...] 20:22:49.986 [debug] QUERY OK source="media_items" db=8.1ms idle=638.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] 20:22:49.991 [debug] QUERY OK source="tasks" db=1.2ms idle=388.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226850, 21, ~U[2026-01-10 09:22:49Z], ~U[2026-01-10 09:22:49Z]] 20:22:49.992 [info] {"args":{"id":21},"id":226826,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":660822,"event":"job:stop","queue_time":126911,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:23:00.038 [info] {"source":"oban","duration":514,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:23:00.364 [info] {"args":{"id":17},"id":226827,"meta":{},"system_time":1768036980364098450,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:23:00.365 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=915.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" = ?) [17] 20:23:00.367 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=916.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:23:00.368 [debug] QUERY OK source="media_profiles" db=0.7ms idle=328.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] 20:23:00.369 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:23:00.369 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 20:23:00.370 [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 [] 20:23:00.370 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:23:00.707 [debug] QUERY OK source="media_items" db=3.8ms idle=337.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", "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", "e3XOdq86shM", ...] 20:23:00.715 [debug] QUERY OK source="media_items" db=5.1ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:23:00.720 [debug] QUERY OK source="tasks" db=0.9ms idle=349.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226851, 17, ~U[2026-01-10 09:23:00Z], ~U[2026-01-10 09:23:00Z]] 20:23:00.721 [info] {"args":{"id":17},"id":226827,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":356296,"event":"job:stop","queue_time":434056,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:23:19.623 [info] {"source":"oban","duration":21189,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:23:20.248 [info] GET / 20:23:20.248 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:23:20.249 [debug] QUERY OK source="settings" db=0.4ms idle=1799.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:23:20.249 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1800.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:23:20.250 [debug] QUERY OK source="sources" db=0.3ms idle=1800.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:23:20.306 [debug] QUERY OK source="media_items" db=55.9ms idle=821.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:23:20.311 [debug] QUERY OK source="media_items" db=4.5ms queue=0.1ms idle=683.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:23:20.313 [debug] QUERY OK source="settings" db=0.7ms idle=63.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:23:20.313 [debug] QUERY OK source="settings" db=0.2ms idle=63.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:23:20.314 [debug] QUERY OK source="settings" db=0.2ms idle=63.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:23:20.326 [debug] QUERY OK source="media_items" db=10.6ms idle=8.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)) [] 20:23:20.328 [debug] QUERY OK source="media_items" db=2.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 INNER 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] 20:23:20.329 [debug] QUERY OK source="sources" db=0.5ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:23:20.368 [debug] QUERY OK source="media_items" db=35.3ms idle=18.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"))) [] 20:23:20.370 [debug] QUERY OK source="media_items" db=1.6ms idle=53.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] 20:23:20.371 [debug] QUERY OK source="sources" db=0.7ms idle=44.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" IN (?,?)) [27, 5] 20:23:20.374 [debug] QUERY OK source="tasks" db=1.0ms idle=44.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"] 20:23:20.375 [info] Sent 200 in 127ms 20:23:49.647 [info] {"source":"oban","duration":23555,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:23:50.533 [info] {"args":{"id":16},"id":226828,"meta":{},"system_time":1768037030532561025,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:23:50.535 [debug] QUERY OK source="sources" db=1.8ms idle=1084.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] 20:23:50.536 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1023.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:23:50.539 [debug] QUERY OK source="media_profiles" db=2.8ms idle=888.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] 20:23:50.540 [debug] QUERY OK source="settings" db=0.6ms idle=22.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:23:50.540 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 20:23:50.541 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:23:50.541 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:23:50.912 [debug] QUERY OK source="media_items" db=2.3ms idle=374.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, "9T4hx4KjyQ8", "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", ...] 20:23:50.917 [debug] QUERY OK source="media_items" db=3.3ms idle=377.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] 20:23:50.921 [debug] QUERY OK source="tasks" db=1.0ms idle=378.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226852, 16, ~U[2026-01-10 09:23:50Z], ~U[2026-01-10 09:23:50Z]] 20:23:50.923 [info] {"args":{"id":16},"id":226828,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":389205,"event":"job:stop","queue_time":342533,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:23:51.528 [info] {"args":{"id":9},"id":226829,"meta":{},"system_time":1768037031527930647,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:23:51.529 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=607.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] 20:23:51.530 [debug] QUERY OK source="settings" db=0.7ms idle=607.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:23:51.531 [debug] QUERY OK source="media_profiles" db=0.6ms idle=599.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] 20:23:51.532 [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 [] 20:23:51.532 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 20:23:51.532 [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 [] 20:23:51.532 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:23:51.984 [debug] QUERY OK source="media_items" db=4.0ms idle=450.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "16b4SEeZ45I", "el_J4DE8WnA", "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", ...] 20:23:51.991 [debug] QUERY OK source="media_items" db=3.0ms idle=457.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] 20:23:51.994 [debug] QUERY OK source="tasks" db=0.5ms idle=461.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226853, 9, ~U[2026-01-10 09:23:51Z], ~U[2026-01-10 09:23:51Z]] 20:23:51.995 [info] {"args":{"id":9},"id":226829,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":466931,"event":"job:stop","queue_time":360936,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:24:00.040 [info] {"source":"oban","duration":301,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:24:16.585 [info] {"args":{"id":20},"id":226830,"meta":{},"system_time":1768037056585294163,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:24:16.586 [debug] QUERY OK source="sources" db=1.0ms idle=1136.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" = ?) [20] 20:24:16.587 [debug] QUERY OK source="settings" db=0.6ms idle=1137.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:16.588 [debug] QUERY OK source="media_profiles" db=0.9ms 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] 20:24:16.589 [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 [] 20:24:16.589 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 20:24:16.590 [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 [] 20:24:16.590 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:24:17.029 [debug] QUERY OK source="media_items" db=2.6ms idle=439.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", ...] 20:24:17.034 [debug] QUERY OK source="media_items" db=3.5ms idle=443.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] 20:24:17.037 [debug] QUERY OK source="tasks" db=0.4ms idle=446.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226854, 20, ~U[2026-01-10 09:24:17Z], ~U[2026-01-10 09:24:17Z]] 20:24:17.038 [info] {"args":{"id":20},"id":226830,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":452307,"event":"job:stop","queue_time":273686,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:24:19.669 [info] {"source":"oban","duration":21707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:24:21.460 [info] GET / 20:24:21.460 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:24:21.460 [debug] QUERY OK source="settings" db=0.3ms idle=1011.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:21.461 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1011.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:24:21.462 [debug] QUERY OK source="sources" db=0.6ms idle=1012.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:24:21.521 [debug] QUERY OK source="media_items" db=59.0ms idle=872.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:24:21.525 [debug] QUERY OK source="media_items" db=3.3ms idle=72.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:24:21.526 [debug] QUERY OK source="settings" db=0.2ms idle=64.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:21.526 [debug] QUERY OK source="settings" db=0.1ms idle=64.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:21.527 [debug] QUERY OK source="settings" db=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 [] 20:24:21.532 [debug] QUERY OK source="media_items" db=4.3ms idle=6.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)) [] 20:24:21.533 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=7.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] 20:24:21.534 [debug] QUERY OK source="sources" db=0.4ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:24:21.572 [debug] QUERY OK source="media_items" db=34.4ms queue=0.1ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:24:21.574 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=45.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:24:21.575 [debug] QUERY OK source="sources" db=0.5ms idle=42.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 (?,?)) [27, 5] 20:24:21.579 [debug] QUERY OK source="tasks" db=1.0ms idle=44.6ms 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"] 20:24:21.581 [info] Sent 200 in 121ms 20:24:26.620 [info] {"args":{"id":7},"id":226835,"meta":{},"system_time":1768037066620006325,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:24:26.621 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=1171.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] 20:24:26.628 [debug] QUERY OK source="settings" db=5.8ms queue=0.1ms idle=1172.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:26.629 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=1022.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] 20:24:26.632 [debug] QUERY OK source="settings" db=2.8ms idle=19.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:26.633 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 20:24:26.633 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:24:26.634 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:24:27.036 [debug] QUERY OK source="media_items" db=2.0ms idle=412.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, "EzCiEv1IqiA", "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", ...] 20:24:27.042 [debug] QUERY OK source="media_items" db=3.7ms idle=410.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] 20:24:27.046 [debug] QUERY OK source="tasks" db=0.4ms idle=412.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226855, 8350, ~U[2026-01-10 09:24:27Z], ~U[2026-01-10 09:24:27Z]] 20:24:27.050 [debug] QUERY OK source="tasks" db=0.5ms idle=4.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226856, 8380, ~U[2026-01-10 09:24:27Z], ~U[2026-01-10 09:24:27Z]] 20:24:27.054 [info] {"args":{"id":8380},"id":226856,"meta":{},"system_time":1768037067054110915,"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"]} 20:24:27.054 [info] {"args":{"id":8350},"id":226855,"meta":{},"system_time":1768037067053992199,"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"]} 20:24:27.055 [debug] QUERY OK source="media_items" db=0.6ms idle=5.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] 20:24:27.055 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:24:27.055 [debug] QUERY OK source="media_items" db=1.3ms idle=5.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" = ?) [8380] 20:24:27.055 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:24:27.056 [debug] QUERY OK source="sources" db=0.7ms 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" = ?) [7] 20:24:27.058 [debug] QUERY OK source="sources" db=2.7ms queue=0.1ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 20:24:27.058 [debug] QUERY OK source="media_profiles" db=1.5ms 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] 20:24:27.060 [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] 20:24:27.061 [debug] QUERY OK source="media_items" db=1.9ms 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] 20:24:27.062 [debug] QUERY OK source="media_items" db=1.0ms 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 [8350] 20:24:27.062 [debug] QUERY OK source="tasks" db=0.5ms idle=1.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226857, 8401, ~U[2026-01-10 09:24:27Z], ~U[2026-01-10 09:24:27Z]] 20:24:27.063 [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" = ?) [8380] 20:24:27.064 [debug] QUERY OK source="media_profiles" db=1.0ms 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] 20:24:27.064 [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" = ?) [8350] 20:24:27.066 [debug] QUERY OK source="settings" db=1.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 [] 20:24:27.066 [debug] QUERY OK source="media_profiles" db=1.6ms 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] 20:24:27.066 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:24:27.067 [debug] Running yt-dlp command for action: get_downloadable_status 20:24:27.067 [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 [] 20:24:27.068 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:24:27.069 [debug] Running yt-dlp command for action: get_downloadable_status 20:24:27.069 [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 [] 20:24:27.070 [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 [] 20:24:27.070 [debug] QUERY OK source="tasks" db=1.0ms idle=1.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226858, 8418, ~U[2026-01-10 09:24:27Z], ~U[2026-01-10 09:24:27Z]] 20:24:27.070 [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 [] 20:24:27.070 [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/2a/6a/2a6ad0f62746cd6d492ae873def2af37607abe7cb423fc7d2dace9c13d83c029.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:24:27.071 [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 [] 20:24:27.072 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:24:27.073 [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 [] 20:24:27.073 [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/ba/00/ba004ef15a5d3fa9a2bf368a4d4caf792b72bc10368c33184835a600c046a086.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:24:27.075 [debug] QUERY OK source="tasks" db=0.9ms idle=2.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226859, 7, ~U[2026-01-10 09:24:27Z], ~U[2026-01-10 09:24:27Z]] 20:24:27.076 [info] {"args":{"id":7},"id":226835,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":455046,"event":"job:stop","queue_time":292408,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:24:33.499 [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/ba/00/ba004ef15a5d3fa9a2bf368a4d4caf792b72bc10368c33184835a600c046a086.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 20:24:33.501 [debug] QUERY OK source="settings" db=0.6ms idle=1051.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.502 [debug] QUERY OK source="settings" db=0.4ms idle=1052.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.503 [debug] Running yt-dlp command for action: get_downloadable_status 20:24:33.506 [debug] QUERY OK source="settings" db=0.4ms idle=1056.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.506 [debug] QUERY OK source="settings" db=0.5ms idle=1056.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.507 [debug] QUERY OK source="settings" db=0.4ms idle=866.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.508 [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/a9/cb/a9cbc9d5de5dde99964a44286131e9c0534f6b34c8119964bd4296301c9f0b22.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:24:33.706 [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/2a/6a/2a6ad0f62746cd6d492ae873def2af37607abe7cb423fc7d2dace9c13d83c029.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 20:24:33.707 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=204.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.709 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=202.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.710 [debug] Running yt-dlp command for action: get_downloadable_status 20:24:33.711 [debug] QUERY OK source="settings" db=0.2ms idle=204.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.712 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=204.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.713 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=66.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:33.713 [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/8e/b8/8eb8a7545acfbbb69ca40d20cffd70cd71a0eb5d4490b081aed930d6b5bcab36.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:24:39.076 [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/a9/cb/a9cbc9d5de5dde99964a44286131e9c0534f6b34c8119964bd4296301c9f0b22.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 20:24:39.076 [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" 20:24:39.076 [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" 20:24:39.077 [info] {"args":{"id":8350},"id":226855,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":12023054,"event":"job:stop","queue_time":52158,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:24:39.085 [info] {"args":{"id":8401},"id":226857,"meta":{},"system_time":1768037079085542709,"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"]} 20:24:39.086 [debug] QUERY OK source="media_items" db=0.6ms idle=1636.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] 20:24:39.086 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:24:39.087 [debug] QUERY OK source="sources" db=0.6ms idle=1426.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] 20:24:39.088 [debug] QUERY OK source="media_profiles" db=0.6ms idle=425.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] 20:24:39.089 [debug] QUERY OK source="media_items" db=0.8ms idle=11.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 [8401] 20:24:39.091 [debug] QUERY OK source="media_metadata" db=0.4ms 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" = ?) [8401] 20:24:39.092 [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] 20:24:39.093 [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 [] 20:24:39.093 [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 [] 20:24:39.094 [debug] Running yt-dlp command for action: get_downloadable_status 20:24:39.097 [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 [] 20:24:39.098 [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 [] 20:24:39.099 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:24:39.099 [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/ef/25/ef256e786365b2104dffb2961533067ca986b52d2c63155a6b33d4c66ca8b61d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:24:39.267 [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/8e/b8/8eb8a7545acfbbb69ca40d20cffd70cd71a0eb5d4490b081aed930d6b5bcab36.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 20:24:39.268 [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" 20:24:39.268 [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" 20:24:39.270 [info] {"args":{"id":8380},"id":226856,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":12214684,"event":"job:stop","queue_time":52158,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:24:39.277 [info] {"args":{"id":8418},"id":226858,"meta":{},"system_time":1768037079277322092,"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"]} 20:24:39.278 [debug] QUERY OK source="media_items" db=0.3ms idle=180.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] 20:24:39.278 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:24:39.279 [debug] QUERY OK source="sources" db=0.4ms idle=180.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] 20:24:39.280 [debug] QUERY OK source="media_profiles" db=0.6ms idle=180.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] 20:24:39.281 [debug] QUERY OK source="media_items" db=1.0ms 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] 20:24:39.282 [debug] QUERY OK source="media_metadata" db=0.1ms 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" = ?) [8418] 20:24:39.283 [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] 20:24:39.285 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:24:39.286 [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 [] 20:24:39.287 [debug] Running yt-dlp command for action: get_downloadable_status 20:24:39.290 [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 [] 20:24:39.290 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:24:39.292 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:24:39.292 [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/23/2d2330d1a4f94f5e96b23be929c7b61ee779b833e32468744b8f572819e13609.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:24:44.712 [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/ef/25/ef256e786365b2104dffb2961533067ca986b52d2c63155a6b33d4c66ca8b61d.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 20:24:44.713 [debug] QUERY OK source="settings" db=0.6ms idle=263.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:44.713 [debug] QUERY OK source="settings" db=0.3ms idle=263.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:44.714 [debug] Running yt-dlp command for action: get_downloadable_status 20:24:44.716 [debug] QUERY OK source="settings" db=0.3ms idle=266.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:44.717 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:24:44.717 [debug] QUERY OK source="settings" db=0.4ms idle=31.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:44.718 [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/f1/26/f1263e6a9747652930b5fd0f3ef503e2ae4bcab8469d0225ff7944b3193edaf9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:24:44.748 [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/23/2d2330d1a4f94f5e96b23be929c7b61ee779b833e32468744b8f572819e13609.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 20:24:44.750 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms 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 [] 20:24:44.750 [debug] QUERY OK source="settings" db=0.3ms idle=36.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:44.751 [debug] Running yt-dlp command for action: get_downloadable_status 20:24:44.753 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:24:44.753 [debug] QUERY OK source="settings" db=0.2ms idle=36.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:24:44.753 [debug] QUERY OK source="settings" db=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 [] 20:24:44.753 [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/9f/5c/9f5c40ddd7636c147a93a192b76fb140364544154689415a5c5731536cefd68e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:24:49.681 [info] {"source":"oban","duration":11415,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:24:52.705 [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/9f/5c/9f5c40ddd7636c147a93a192b76fb140364544154689415a5c5731536cefd68e.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 20:24:52.705 [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" 20:24:52.706 [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" 20:24:52.707 [info] {"args":{"id":8418},"id":226858,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":13429054,"event":"job:stop","queue_time":12276150,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:24:52.784 [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/f1/26/f1263e6a9747652930b5fd0f3ef503e2ae4bcab8469d0225ff7944b3193edaf9.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 20:24:52.785 [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" 20:24:52.785 [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" 20:24:52.786 [info] {"args":{"id":8401},"id":226857,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":13699803,"event":"job:stop","queue_time":12083145,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:24:58.735 [info] {"args":{"id":11},"id":226836,"meta":{},"system_time":1768037098734906438,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:24:58.736 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=286.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] 20:24:58.737 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:24:58.738 [debug] QUERY OK source="media_profiles" db=0.4ms idle=287.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] 20:24:58.738 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:24:58.739 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 20:24:58.739 [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 [] 20:24:58.739 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:24:59.196 [debug] QUERY OK source="media_items" db=4.9ms idle=454.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, "VSW2XDMy1n4", "IAT_Zf2PCL4", "-xT57w8ZS8U", "EdS_OqCQSew", "FwEJK_d8y8c", "X07XF175FSA", "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", ...] 20:24:59.204 [debug] QUERY OK source="media_items" db=4.3ms queue=0.1ms idle=462.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] 20:24:59.210 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=13.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226860, 11, ~U[2026-01-10 09:24:59Z], ~U[2026-01-10 09:24:59Z]] 20:24:59.211 [info] {"args":{"id":11},"id":226836,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":475412,"event":"job:stop","queue_time":192875,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:25:00.041 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:25:16.776 [info] {"args":{"id":25},"id":226837,"meta":{},"system_time":1768037116775958289,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:25:16.776 [debug] QUERY OK source="sources" db=0.3ms idle=326.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] 20:25:16.777 [debug] QUERY OK source="settings" db=0.9ms idle=327.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:25:16.779 [debug] QUERY OK source="media_profiles" db=0.8ms idle=328.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] 20:25:16.780 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:25:16.780 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 20:25:16.780 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:25:16.781 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:25:17.104 [debug] QUERY OK source="media_items" db=2.6ms queue=0.1ms idle=324.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"] 20:25:17.107 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=327.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] 20:25:17.112 [debug] QUERY OK source="tasks" db=0.9ms idle=330.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226861, 25, ~U[2026-01-10 09:25:17Z], ~U[2026-01-10 09:25:17Z]] 20:25:17.114 [info] {"args":{"id":25},"id":226837,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":337059,"event":"job:stop","queue_time":417275,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:25:19.705 [info] {"source":"oban","duration":22133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:25:29.117 [info] GET / 20:25:29.117 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:25:29.118 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1310.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:25:29.119 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=669.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:25:29.120 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=670.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:25:29.181 [debug] QUERY OK source="media_items" db=60.3ms idle=671.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:25:29.194 [debug] QUERY OK source="media_items" db=12.4ms queue=0.1ms idle=371.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:25:29.195 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=76.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:25:29.196 [debug] QUERY OK source="settings" db=0.3ms idle=76.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:25:29.197 [debug] QUERY OK source="settings" db=0.3ms idle=76.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:25:29.204 [debug] QUERY OK source="media_items" db=5.7ms idle=17.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)) [] 20:25:29.206 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=11.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] 20:25:29.207 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:25:29.245 [debug] QUERY OK source="media_items" db=34.4ms idle=14.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"))) [] 20:25:29.248 [debug] QUERY OK source="media_items" db=2.4ms queue=0.1ms idle=48.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:25:29.250 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=44.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" IN (?,?)) [27, 5] 20:25:29.256 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=50.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"] 20:25:29.259 [info] Sent 200 in 141ms 20:25:35.853 [info] {"args":{"id":2},"id":226838,"meta":{},"system_time":1768037135853297997,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:25:35.854 [debug] QUERY OK source="sources" db=0.7ms idle=1404.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] 20:25:35.858 [debug] QUERY OK source="settings" db=2.9ms idle=1405.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:25:35.858 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1026.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] 20:25:35.860 [debug] QUERY OK source="settings" db=0.6ms idle=20.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:25:35.860 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 20:25:35.860 [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 [] 20:25:35.860 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:25:36.369 [debug] QUERY OK source="media_items" db=3.0ms idle=511.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, "Usk1j8IT7ww", "eIpWmOMdYMA", "M08XtzkUg2A", "XC32_9oNoeQ", "gVqE98_flmc", "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", ...] 20:25:36.379 [debug] QUERY OK source="media_items" db=5.9ms queue=0.1ms idle=515.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] 20:25:36.383 [debug] QUERY OK source="tasks" db=0.8ms idle=522.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226862, 2, ~U[2026-01-10 09:25:36Z], ~U[2026-01-10 09:25:36Z]] 20:25:36.385 [info] {"args":{"id":2},"id":226838,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":530749,"event":"job:stop","queue_time":230211,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:25:49.729 [info] {"source":"oban","duration":22655,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:26:00.042 [info] {"source":"oban","duration":282,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:26:19.753 [info] {"source":"oban","duration":22727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:26:29.393 [info] GET / 20:26:29.393 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:26:29.394 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:26:29.395 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=1945.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:26:29.396 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1946.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:26:29.456 [debug] QUERY OK source="media_items" db=59.7ms queue=0.1ms idle=1387.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:26:29.465 [debug] QUERY OK source="media_items" db=8.1ms queue=0.1ms idle=444.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:26:29.466 [debug] QUERY OK source="settings" db=0.6ms idle=71.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:26:29.467 [debug] QUERY OK source="settings" db=0.2ms idle=71.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:26:29.467 [debug] QUERY OK source="settings" db=0.1ms idle=71.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:26:29.472 [debug] QUERY OK source="media_items" db=4.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 (NOT (m0."media_filepath" IS NULL)) [] 20:26:29.475 [debug] QUERY OK source="media_items" db=1.3ms 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 INNER 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] 20:26:29.476 [debug] QUERY OK source="sources" db=0.3ms 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" IN (?,?,?)) [12, 15, 6] 20:26:29.520 [debug] QUERY OK source="media_items" db=33.5ms idle=20.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:26:29.523 [debug] QUERY OK source="media_items" db=1.9ms queue=0.2ms 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" FROM "media_items" AS m0 INNER 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] 20:26:29.525 [debug] QUERY OK source="sources" db=1.7ms idle=51.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] 20:26:29.529 [debug] QUERY OK source="tasks" db=0.5ms idle=53.6ms 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"] 20:26:29.530 [info] Sent 200 in 136ms 20:26:41.052 [info] {"args":{"id":1},"id":226839,"meta":{},"system_time":1768037201052523198,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:26:41.061 [debug] QUERY OK source="sources" db=7.7ms idle=1603.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] 20:26:41.062 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=1611.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:26:41.063 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=1023.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] 20:26:41.070 [debug] QUERY OK source="settings" db=6.1ms idle=20.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:26:41.070 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 20:26:41.071 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=18.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:26:41.071 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:26:41.543 [debug] QUERY OK source="media_items" db=5.5ms idle=476.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, "W4asNKhu7Nk", "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", ...] 20:26:41.552 [debug] QUERY OK source="media_items" db=7.3ms idle=482.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] 20:26:41.556 [debug] QUERY OK source="tasks" db=0.6ms idle=484.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226863, 1, ~U[2026-01-10 09:26:41Z], ~U[2026-01-10 09:26:41Z]] 20:26:41.557 [info] {"args":{"id":1},"id":226839,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":504005,"event":"job:stop","queue_time":448193,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:26:49.777 [info] {"source":"oban","duration":23532,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:26:50.080 [info] {"args":{"id":19},"id":226840,"meta":{},"system_time":1768037210080664115,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:26:50.082 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=631.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] 20:26:50.084 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=633.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:26:50.085 [debug] QUERY OK source="media_profiles" db=1.5ms idle=306.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] 20:26:50.086 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:26:50.086 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 20:26:50.087 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:26:50.087 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:26:50.420 [debug] QUERY OK source="media_items" db=1.6ms idle=335.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"] 20:26:50.424 [debug] QUERY OK source="media_items" db=1.0ms idle=339.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] 20:26:50.430 [debug] QUERY OK source="tasks" db=2.3ms idle=339.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226864, 19, ~U[2026-01-10 09:26:50Z], ~U[2026-01-10 09:26:50Z]] 20:26:50.431 [info] {"args":{"id":19},"id":226840,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":349627,"event":"job:stop","queue_time":462531,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:27:00.043 [info] {"source":"oban","duration":564,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:27:19.803 [info] {"source":"oban","duration":24031,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:27:29.702 [info] GET / 20:27:29.702 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:27:29.703 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=514.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:27:29.704 [debug] QUERY OK source="media_profiles" db=0.2ms idle=254.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:27:29.705 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=255.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:27:29.733 [debug] QUERY OK source="media_items" db=27.5ms idle=255.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:27:29.737 [debug] QUERY OK source="media_items" db=3.4ms queue=0.3ms idle=283.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:27:29.739 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=34.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:27:29.740 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=35.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:27:29.741 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=36.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:27:29.748 [debug] QUERY OK source="media_items" db=4.4ms queue=0.1ms idle=10.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)) [] 20:27:29.750 [debug] QUERY OK source="media_items" db=1.8ms queue=0.1ms idle=11.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:27:29.752 [debug] QUERY OK source="sources" db=0.4ms idle=12.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" IN (?,?,?)) [12, 15, 6] 20:27:29.795 [debug] QUERY OK source="media_items" db=36.3ms idle=18.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:27:29.797 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=53.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] 20:27:29.799 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=50.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 (?,?)) [27, 5] 20:27:29.805 [debug] QUERY OK source="tasks" db=0.4ms idle=54.1ms 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"] 20:27:29.807 [info] Sent 200 in 104ms 20:27:42.226 [info] {"args":{"id":26},"id":226841,"meta":{},"system_time":1768037262225934325,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:27:42.229 [debug] QUERY OK source="sources" db=3.0ms idle=776.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] 20:27:42.230 [debug] QUERY OK source="settings" db=1.0ms idle=780.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:27:42.232 [debug] QUERY OK source="media_profiles" db=0.9ms idle=781.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] 20:27:42.239 [debug] QUERY OK source="settings" db=7.1ms 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 [] 20:27:42.239 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 20:27:42.240 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:27:42.240 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:27:42.748 [debug] QUERY OK source="media_items" db=6.4ms queue=0.1ms idle=512.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "UO8_-B-383w", "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", ...] 20:27:42.761 [debug] QUERY OK source="media_items" db=8.4ms idle=521.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")))) [26] 20:27:42.766 [debug] QUERY OK source="tasks" db=0.8ms idle=525.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226865, 26, ~U[2026-01-10 09:27:42Z], ~U[2026-01-10 09:27:42Z]] 20:27:42.767 [info] {"args":{"id":26},"id":226841,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":540412,"event":"job:stop","queue_time":312515,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:27:49.827 [info] {"source":"oban","duration":23298,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:27:54.265 [info] {"args":{"id":15},"id":226842,"meta":{},"system_time":1768037274265016014,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:27:54.266 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1816.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] 20:27:54.267 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms 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 [] 20:27:54.268 [debug] QUERY OK source="media_profiles" db=1.0ms idle=818.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] 20:27:54.269 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:27:54.269 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 20:27:54.270 [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 [] 20:27:54.270 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:27:54.744 [debug] QUERY OK source="media_items" db=4.7ms 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, "OCnm1p7J38Q", "javP2Zg24jM", "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", ...] 20:27:54.753 [debug] QUERY OK source="media_items" db=8.5ms idle=478.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] 20:27:54.758 [debug] QUERY OK source="tasks" db=1.3ms idle=486.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226866, 15, ~U[2026-01-10 09:27:54Z], ~U[2026-01-10 09:27:54Z]] 20:27:54.759 [info] {"args":{"id":15},"id":226842,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":493746,"event":"job:stop","queue_time":375240,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:28:00.045 [info] {"source":"oban","duration":371,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:28:18.343 [info] {"args":{"id":3},"id":226843,"meta":{},"system_time":1768037298342901190,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:28:18.343 [debug] QUERY OK source="sources" db=0.5ms idle=1893.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] 20:28:18.344 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1013.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:18.345 [debug] QUERY OK source="media_profiles" db=0.5ms idle=895.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] 20:28:18.346 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:28:18.346 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 20:28:18.347 [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 [] 20:28:18.347 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:28:18.832 [debug] QUERY OK source="media_items" db=5.4ms idle=482.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "rzQeUM-lMUY", "BkUHm95UvCw", "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", ...] 20:28:18.841 [debug] QUERY OK source="media_items" db=7.4ms idle=489.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] 20:28:18.846 [debug] QUERY OK source="tasks" db=0.8ms idle=497.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226867, 3, ~U[2026-01-10 09:28:18Z], ~U[2026-01-10 09:28:18Z]] 20:28:18.847 [info] {"args":{"id":3},"id":226843,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":503235,"event":"job:stop","queue_time":365258,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:28:19.852 [info] {"source":"oban","duration":23131,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:28:30.172 [info] GET / 20:28:30.173 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:28:30.174 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1723.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:30.174 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=1724.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:28:30.175 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1725.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:28:30.206 [debug] QUERY OK source="media_items" db=30.4ms queue=0.1ms idle=803.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:28:30.210 [debug] QUERY OK source="media_items" db=3.1ms queue=0.1ms idle=757.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:28:30.211 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=36.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:30.211 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=36.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:30.212 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=36.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:30.218 [debug] QUERY OK source="media_items" db=3.5ms idle=8.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 (NOT (m0."media_filepath" IS NULL)) [] 20:28:30.219 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=8.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:28:30.221 [debug] QUERY OK source="sources" db=0.3ms idle=9.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" IN (?,?,?)) [12, 15, 6] 20:28:30.266 [debug] QUERY OK source="media_items" db=38.2ms idle=16.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:28:30.269 [debug] QUERY OK source="media_items" db=1.7ms queue=0.2ms idle=54.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:28:30.270 [debug] QUERY OK source="sources" db=0.2ms idle=52.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] 20:28:30.273 [debug] QUERY OK source="tasks" db=0.4ms idle=53.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"] 20:28:30.274 [info] Sent 200 in 101ms 20:28:49.876 [info] {"source":"oban","duration":22828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:28:57.463 [info] {"args":{"id":22},"id":226844,"meta":{},"system_time":1768037337463673667,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:28:57.464 [debug] QUERY OK source="sources" db=0.5ms idle=14.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] 20:28:57.467 [debug] QUERY OK source="settings" db=2.9ms idle=15.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:57.469 [debug] QUERY OK source="media_profiles" db=0.7ms idle=18.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] 20:28:57.469 [debug] QUERY OK source="settings" db=0.4ms idle=14.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:57.469 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 20:28:57.470 [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 [] 20:28:57.470 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:28:57.780 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms 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."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"] 20:28:57.782 [debug] QUERY OK source="settings" db=0.3ms idle=314.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:57.783 [debug] QUERY OK source="settings" db=0.3ms idle=313.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:57.783 [debug] Running yt-dlp command for action: get_media_attributes 20:28:58.522 [debug] QUERY OK source="settings" db=0.3ms idle=1052.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:58.523 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=743.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:58.524 [debug] QUERY OK source="settings" db=0.2ms idle=741.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:28:58.524 [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/54/d1/54d18532a6a5d0c750c63b127028fe72cf214af8a1c27c01aefcd037cd19c3ea.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:29:00.046 [info] {"source":"oban","duration":266,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:29:03.280 [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/54/d1/54d18532a6a5d0c750c63b127028fe72cf214af8a1c27c01aefcd037cd19c3ea.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 20:29:03.281 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 20:29:03.283 [debug] QUERY OK source="media_items" db=1.4ms queue=0.1ms idle=1832.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] 20:29:03.288 [debug] QUERY OK source="tasks" db=0.9ms idle=838.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226868, 22, ~U[2026-01-10 09:29:03Z], ~U[2026-01-10 09:29:03Z]] 20:29:03.290 [info] {"args":{"id":22},"id":226844,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5825066,"event":"job:stop","queue_time":769893,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:29:09.490 [info] {"args":{"id":18},"id":226845,"meta":{},"system_time":1768037349490259682,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:29:09.491 [debug] QUERY OK source="sources" db=0.5ms idle=1041.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] 20:29:09.492 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1042.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:09.493 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1015.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] 20:29:09.494 [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 [] 20:29:09.494 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 20:29:09.495 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:29:09.495 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:29:09.933 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=438.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, "XCGRhxHrjWg", "fyWYr4PukJY", "-w4HeclDfgE", "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", ...] 20:29:09.940 [debug] QUERY OK source="media_items" db=2.9ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:29:09.943 [debug] QUERY OK source="tasks" db=0.4ms idle=447.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226869, 18, ~U[2026-01-10 09:29:09Z], ~U[2026-01-10 09:29:09Z]] 20:29:09.945 [info] {"args":{"id":18},"id":226845,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":453776,"event":"job:stop","queue_time":365172,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:29:15.002 [info] GET /.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI 20:29:15.003 [debug] QUERY OK source="settings" db=0.6ms idle=1553.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:15.004 [debug] QUERY OK source="settings" db=0.5ms idle=1554.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:15.004 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:29:15.005 [error] #PID<0.51112.0> running PinchflatWeb.Endpoint (connection #PID<0.51111.0>, stream id 1) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI ** (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/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51111.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36074}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51112.0>, params: %{}, path_info: [".well-known", "acme-challenge", "-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUm16LTIeX74MADFci"} ], 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.51111.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36074}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51111.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36074}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51112.0>, params: %{}, path_info: [".well-known", "acme-challenge", "-EvFSJlTonaqlA7p5LVCIAiV8b6dc46P4NQAnI2h0mI"], 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.e (truncated) 20:29:16.569 [info] GET /.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro 20:29:16.571 [debug] QUERY OK source="settings" db=0.7ms idle=1120.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:16.572 [debug] QUERY OK source="settings" db=0.5ms idle=1070.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:16.572 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:29:16.572 [error] #PID<0.51113.0> running PinchflatWeb.Endpoint (connection #PID<0.51111.0>, stream id 2) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro ** (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/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51111.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36074}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51113.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUm7v26mstkrMAD1yh"} ], 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.51111.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36074}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51111.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36074}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51113.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Fs3JWRiF-63AXWWGbavOI0n77UWax9nAgDYgoO0v0Ro"], 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.e (truncated) 20:29:16.839 [info] GET /.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY 20:29:16.840 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:29:16.841 [debug] QUERY OK source="settings" db=0.3ms idle=391.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:16.841 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:29:16.842 [error] #PID<0.51114.0> running PinchflatWeb.Endpoint (connection #PID<0.51111.0>, stream id 3) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY ** (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/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51111.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36074}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51114.0>, params: %{}, path_info: [".well-known", "acme-challenge", "bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUm8wPB2chs2IAD1zB"} ], 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.51111.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36074}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51111.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36074}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51114.0>, params: %{}, path_info: [".well-known", "acme-challenge", "bfWZ3YIJbnlEytJFQyFT2ieiQcsP49GajaU2VvHfKnY"], 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.e (truncated) 20:29:19.695 [info] GET /.well-known/acme-challenge/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A 20:29:19.697 [debug] QUERY OK source="settings" db=0.9ms idle=1246.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:19.698 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1247.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:19.698 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:29:19.699 [error] #PID<0.51116.0> running PinchflatWeb.Endpoint (connection #PID<0.51115.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A ** (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/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51115.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 36080}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51116.0>, params: %{}, path_info: [".well-known", "acme-challenge", "dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A"], 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/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A"}, {"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/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUnHZJonZiIDQADFdC"} ], 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.51115.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 36080}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51115.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 36080}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51116.0>, params: %{}, path_info: [".well-known", "acme-challenge", "dJsptsg6G4GS6kDoYaleOMRmpHb1T53zWTvl4xVe67A"], 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) 20:29:19.900 [info] {"source":"oban","duration":22707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:29:26.937 [info] GET /.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM 20:29:26.939 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1489.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:26.940 [debug] QUERY OK source="settings" db=0.6ms idle=1490.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:26.940 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:29:26.942 [error] #PID<0.51121.0> running PinchflatWeb.Endpoint (connection #PID<0.51120.0>, stream id 1) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM ** (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/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51120.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36222}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51121.0>, params: %{}, path_info: [".well-known", "acme-challenge", "DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM"], 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.efe32w.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.efe32w.uncld.dev"}, {"referer", "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM"}, {"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.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUniXycTXGe3sAD1zh"} ], 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.51120.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36222}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51120.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 36222}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.efe32w.uncld.dev", "referer" => "http://pinchflat.efe32w.uncld.dev/.well-known/acme-challenge/DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM", "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.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51121.0>, params: %{}, path_info: [".well-known", "acme-challenge", "DMieHqw_oZUlQDpjvLBRPRYoEQGa0q5yb8lMkyDDyEM"], 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.e (truncated) 20:29:35.549 [info] GET / 20:29:35.549 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:29:35.549 [debug] QUERY OK source="settings" db=0.3ms idle=1099.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:35.550 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1100.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:29:35.551 [debug] QUERY OK source="sources" db=0.4ms idle=1100.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:29:35.611 [debug] QUERY OK source="media_items" db=59.6ms idle=991.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:29:35.614 [debug] QUERY OK source="media_items" db=3.2ms idle=61.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:29:35.615 [debug] QUERY OK source="settings" db=0.2ms idle=64.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:35.616 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:29:35.617 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:29:35.623 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms idle=8.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)) [] 20:29:35.626 [debug] QUERY OK source="media_items" db=1.5ms queue=0.2ms idle=9.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:29:35.628 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms 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" IN (?,?,?)) [12, 15, 6] 20:29:35.702 [debug] QUERY OK source="media_items" db=67.3ms idle=19.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:29:35.705 [debug] QUERY OK source="media_items" db=1.4ms queue=0.2ms idle=85.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:29:35.707 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=82.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" IN (?,?)) [27, 5] 20:29:35.710 [debug] QUERY OK source="tasks" db=0.4ms idle=83.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"] 20:29:35.711 [info] Sent 200 in 162ms 20:29:42.037 [info] GET /.well-known/acme-challenge/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s 20:29:42.038 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=588.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:42.039 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=589.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:42.040 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:29:42.041 [error] #PID<0.51125.0> running PinchflatWeb.Endpoint (connection #PID<0.51124.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s ** (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/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51124.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 43710}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51125.0>, params: %{}, path_info: [".well-known", "acme-challenge", "1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s"], 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/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s"}, {"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/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUoanwMYs1TaQADFgC"} ], 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.51124.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 43710}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51124.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 43710}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51125.0>, params: %{}, path_info: [".well-known", "acme-challenge", "1-Pi7h-UfF1J5mL4YKJZlxkNk8voXgEoiP5X4grh58s"], 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) 20:29:49.911 [info] {"source":"oban","duration":10712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:29:57.441 [info] GET /.well-known/acme-challenge/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE 20:29:57.443 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1992.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:57.444 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1993.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:29:57.444 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:29:57.444 [error] #PID<0.51129.0> running PinchflatWeb.Endpoint (connection #PID<0.51128.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE ** (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/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51128.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 53948}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51129.0>, params: %{}, path_info: [".well-known", "acme-challenge", "yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE"], 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/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE"}, {"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/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUpUAZ6inUXrIADFhC"} ], 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.51128.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 53948}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51128.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 53948}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51129.0>, params: %{}, path_info: [".well-known", "acme-challenge", "yvFiWWTbkiCWX3EfBZf9MzunW0FXUJ0pZRnHKL02SbE"], 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) 20:30:00.047 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:30:06.726 [info] {"args":{"id":23},"id":226846,"meta":{},"system_time":1768037406725978130,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:30:06.727 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1277.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] 20:30:06.729 [debug] QUERY OK source="settings" db=1.1ms queue=0.1ms idle=1020.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:06.733 [debug] QUERY OK source="media_profiles" db=3.6ms queue=0.1ms idle=280.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] 20:30:06.734 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=21.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:06.734 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 20:30:06.735 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:30:06.735 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:30:07.090 [debug] QUERY OK source="media_items" db=1.6ms 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."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"] 20:30:07.094 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:30:07.098 [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" [226870, 23, ~U[2026-01-10 09:30:07Z], ~U[2026-01-10 09:30:07Z]] 20:30:07.099 [info] {"args":{"id":23},"id":226846,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":372977,"event":"job:stop","queue_time":485843,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:30:19.934 [info] {"source":"oban","duration":21056,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:30:35.869 [info] GET / 20:30:35.869 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:30:35.870 [debug] QUERY OK source="settings" db=0.9ms idle=1420.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:35.871 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1421.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:30:35.871 [debug] QUERY OK source="sources" db=0.3ms idle=1069.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:30:35.933 [debug] QUERY OK source="media_items" db=61.2ms idle=422.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:30:35.938 [debug] QUERY OK source="media_items" db=4.9ms idle=130.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:30:35.939 [debug] QUERY OK source="settings" db=0.5ms idle=68.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:35.940 [debug] QUERY OK source="settings" db=0.6ms idle=68.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:35.941 [debug] QUERY OK source="settings" db=0.5ms idle=68.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:35.953 [debug] QUERY OK source="media_items" db=11.5ms idle=8.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)) [] 20:30:35.955 [debug] QUERY OK source="media_items" db=1.7ms idle=15.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] 20:30:35.956 [debug] QUERY OK source="sources" db=0.5ms idle=16.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 (?,?,?)) [12, 15, 6] 20:30:35.997 [debug] QUERY OK source="media_items" db=37.1ms idle=19.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:30:35.999 [debug] QUERY OK source="media_items" db=1.5ms queue=0.1ms idle=56.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:30:36.000 [debug] QUERY OK source="sources" db=0.6ms idle=46.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] 20:30:36.004 [debug] QUERY OK source="tasks" db=1.2ms idle=47.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"] 20:30:36.006 [info] Sent 200 in 136ms 20:30:49.960 [info] {"source":"oban","duration":24772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:30:51.418 [info] GET /.well-known/acme-challenge/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M 20:30:51.419 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1969.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:51.420 [debug] QUERY OK source="settings" db=0.5ms idle=1970.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:51.420 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:30:51.421 [error] #PID<0.51140.0> running PinchflatWeb.Endpoint (connection #PID<0.51139.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M ** (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/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51139.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 57976}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51140.0>, params: %{}, path_info: [".well-known", "acme-challenge", "4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M"], 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/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M"}, {"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/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUsdFbGbMkq5kADFoC"} ], 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.51139.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 57976}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51139.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 57976}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M", "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: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51140.0>, params: %{}, path_info: [".well-known", "acme-challenge", "4y9u5kEAjF7vzpV6Od8GcotwAEm-38wSPZpm1vnxW-M"], 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) 20:30:54.287 [info] GET /.well-known/acme-challenge/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU 20:30:54.289 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1838.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:54.290 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1431.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:54.290 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:30:54.291 [error] #PID<0.51141.0> running PinchflatWeb.Endpoint (connection #PID<0.51139.0>, stream id 2) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU ** (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/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51139.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 57976}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51141.0>, params: %{}, path_info: [".well-known", "acme-challenge", "nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU"], 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/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU"}, {"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/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUsnxjQ771YpYADFoi"} ], 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.51139.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 57976}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51139.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 57976}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51141.0>, params: %{}, path_info: [".well-known", "acme-challenge", "nidxv-8OeMKXz0tLe5n4PZj8nyb9jMIvcg7LrggAHCU"], 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) 20:30:54.873 [info] {"args":{"id":10},"id":226847,"meta":{},"system_time":1768037454873429992,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:30:54.874 [debug] QUERY OK source="sources" db=0.7ms idle=1012.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" = ?) [10] 20:30:54.875 [debug] QUERY OK source="settings" db=0.5ms idle=585.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:54.876 [debug] QUERY OK source="media_profiles" db=0.7ms idle=585.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] 20:30:54.880 [debug] QUERY OK source="settings" db=3.3ms 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 [] 20:30:54.880 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 20:30:54.880 [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 [] 20:30:54.880 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:30:55.263 [debug] QUERY OK source="media_items" db=5.3ms 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, "g0z7tR6KdIE", "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", ...] 20:30:55.266 [debug] QUERY OK source="settings" db=0.5ms idle=390.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:55.267 [debug] QUERY OK source="settings" db=0.4ms idle=390.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:55.267 [debug] Running yt-dlp command for action: get_media_attributes 20:30:55.269 [debug] QUERY OK source="settings" db=0.4ms idle=388.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:55.270 [debug] QUERY OK source="settings" db=0.4ms idle=388.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:30:55.270 [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 [] 20:30:55.271 [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/16/e2/16e20b8e2157a18a012167d8db0d2ca5ffa95124ff3959829de80b1eda902425.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:30:59.943 [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/16/e2/16e20b8e2157a18a012167d8db0d2ca5ffa95124ff3959829de80b1eda902425.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. 20:30:59.944 [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} 20:30:59.946 [debug] QUERY OK source="media_items" db=1.1ms queue=0.3ms idle=1495.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] 20:30:59.950 [debug] QUERY OK source="tasks" db=0.6ms idle=1071.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226871, 10, ~U[2026-01-10 09:30:59Z], ~U[2026-01-10 09:30:59Z]] 20:30:59.951 [info] {"args":{"id":10},"id":226847,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5077499,"event":"job:stop","queue_time":645586,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:31:00.051 [info] {"source":"oban","duration":2662,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:31:06.909 [info] {"args":{"id":6},"id":226848,"meta":{},"system_time":1768037466909738755,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:31:06.910 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [6] 20:31:06.911 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1461.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:31:06.912 [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] 20:31:06.913 [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 [] 20:31:06.913 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 20:31:06.914 [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 [] 20:31:06.914 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:31:07.323 [debug] QUERY OK source="media_items" db=2.8ms idle=409.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, "cIrfWaWIByQ", "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", ...] 20:31:07.329 [debug] QUERY OK source="media_items" db=1.9ms queue=0.1ms idle=415.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] 20:31:07.334 [debug] QUERY OK source="tasks" db=0.9ms idle=419.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226872, 6, ~U[2026-01-10 09:31:07Z], ~U[2026-01-10 09:31:07Z]] 20:31:07.336 [info] {"args":{"id":6},"id":226848,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":425254,"event":"job:stop","queue_time":435656,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:31:08.919 [info] {"args":{"id":24},"id":226849,"meta":{},"system_time":1768037468918995663,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:31:08.920 [debug] QUERY OK source="sources" db=0.7ms idle=469.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] 20:31:08.920 [debug] QUERY OK source="settings" db=0.3ms idle=470.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:31:08.921 [debug] QUERY OK source="media_profiles" db=0.3ms idle=471.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] 20:31:08.922 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:31:08.922 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 20:31:08.922 [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 [] 20:31:08.922 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:31:09.269 [debug] QUERY OK source="media_items" db=4.8ms idle=343.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", ...] 20:31:09.273 [debug] QUERY OK source="media_items" db=1.8ms idle=350.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] 20:31:09.277 [debug] QUERY OK source="tasks" db=1.0ms idle=353.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226873, 24, ~U[2026-01-10 09:31:09Z], ~U[2026-01-10 09:31:09Z]] 20:31:09.278 [info] {"args":{"id":24},"id":226849,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":358711,"event":"job:stop","queue_time":480929,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:31:19.972 [info] {"source":"oban","duration":10771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:31:40.624 [info] GET / 20:31:40.624 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:31:40.625 [debug] QUERY OK source="settings" db=0.3ms idle=1175.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:31:40.625 [debug] QUERY OK source="media_profiles" db=0.2ms idle=633.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:31:40.626 [debug] QUERY OK source="sources" db=0.1ms idle=176.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:31:40.658 [debug] QUERY OK source="media_items" db=31.7ms idle=176.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:31:40.661 [debug] QUERY OK source="media_items" db=3.1ms idle=208.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:31:40.662 [debug] QUERY OK source="settings" db=0.2ms idle=36.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:31:40.662 [debug] QUERY OK source="settings" db=0.1ms idle=36.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:31:40.663 [debug] QUERY OK source="settings" db=0.1ms idle=36.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:31:40.667 [debug] QUERY OK source="media_items" db=3.3ms idle=5.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 (NOT (m0."media_filepath" IS NULL)) [] 20:31:40.667 [debug] QUERY OK source="media_items" db=0.6ms idle=5.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:31:40.668 [debug] QUERY OK source="sources" db=0.3ms idle=6.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 (?,?,?)) [12, 15, 6] 20:31:40.710 [debug] QUERY OK source="media_items" db=35.0ms idle=12.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"))) [] 20:31:40.712 [debug] QUERY OK source="media_items" db=1.6ms idle=47.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] 20:31:40.713 [debug] QUERY OK source="sources" db=0.4ms 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" IN (?,?)) [27, 5] 20:31:40.716 [debug] QUERY OK source="tasks" db=0.4ms idle=47.6ms 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"] 20:31:40.716 [info] Sent 200 in 92ms 20:31:49.990 [info] {"source":"oban","duration":16747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:32:00.052 [info] {"source":"oban","duration":401,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:32:20.015 [info] {"source":"oban","duration":23799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:32:40.993 [info] GET / 20:32:40.994 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:32:40.995 [debug] QUERY OK source="settings" db=0.3ms idle=1545.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:32:40.995 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1546.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:32:40.996 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1546.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:32:41.023 [debug] QUERY OK source="media_items" db=26.9ms idle=820.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:32:41.027 [debug] QUERY OK source="media_items" db=3.0ms idle=574.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:32:41.027 [debug] QUERY OK source="settings" db=0.2ms idle=32.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:32:41.028 [debug] QUERY OK source="settings" db=0.3ms idle=31.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:32:41.028 [debug] QUERY OK source="settings" db=0.3ms idle=32.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:32:41.032 [debug] QUERY OK source="media_items" db=3.3ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:32:41.034 [debug] QUERY OK source="media_items" db=1.5ms idle=6.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)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:32:41.036 [debug] QUERY OK source="sources" db=0.7ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:32:41.112 [debug] QUERY OK source="media_items" db=74.3ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:32:41.114 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=84.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:32:41.115 [debug] QUERY OK source="sources" db=0.6ms idle=82.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] 20:32:41.118 [debug] QUERY OK source="tasks" db=0.4ms idle=82.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"] 20:32:41.118 [info] Sent 200 in 125ms 20:32:42.025 [info] GET /.well-known/acme-challenge/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4 20:32:42.026 [debug] QUERY OK source="settings" db=0.4ms idle=912.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:32:42.027 [debug] QUERY OK source="settings" db=0.4ms idle=912.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:32:42.027 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:32:42.028 [error] #PID<0.51159.0> running PinchflatWeb.Endpoint (connection #PID<0.51157.0>, stream id 2) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4 ** (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/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51157.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 45914}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51159.0>, params: %{}, path_info: [".well-known", "acme-challenge", "S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4"], 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/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4"}, {"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/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlUy5INWQctdk8ADFwC"} ], 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.51157.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 45914}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51157.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 45914}, bindings: %{}, sock: {{10, 210, 2, 8}, 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/S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4", "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: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.51159.0>, params: %{}, path_info: [".well-known", "acme-challenge", "S1RnszuWkePUYdAAXAm66p-T8QLoKr-0TOFbZfC3gP4"], 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) 20:32:50.020 [info] {"source":"oban","duration":4229,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:32:50.207 [info] {"args":{"id":21},"id":226850,"meta":{},"system_time":1768037570207429340,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:32:50.211 [debug] QUERY OK source="sources" db=2.9ms idle=758.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] 20:32:50.214 [debug] QUERY OK source="settings" db=3.2ms queue=0.1ms idle=762.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:32:50.219 [debug] QUERY OK source="media_profiles" db=3.9ms idle=194.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] 20:32:50.223 [debug] QUERY OK source="settings" db=3.5ms queue=0.1ms idle=20.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:32:50.223 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 20:32:50.224 [debug] QUERY OK source="settings" db=0.4ms idle=16.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:32:50.224 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:32:50.785 [debug] QUERY OK source="media_items" db=3.2ms idle=570.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "9t1DPHAoHyw", "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", ...] 20:32:50.794 [debug] QUERY OK source="media_items" db=4.3ms idle=575.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] 20:32:50.798 [debug] QUERY OK source="tasks" db=0.5ms idle=573.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226874, 21, ~U[2026-01-10 09:32:50Z], ~U[2026-01-10 09:32:50Z]] 20:32:50.800 [info] {"args":{"id":21},"id":226850,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":591123,"event":"job:stop","queue_time":218522,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:33:00.053 [info] {"source":"oban","duration":437,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:33:01.236 [info] {"args":{"id":17},"id":226851,"meta":{},"system_time":1768037581235905017,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:33:01.237 [debug] QUERY OK source="sources" db=0.8ms idle=787.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" = ?) [17] 20:33:01.238 [debug] QUERY OK source="settings" db=0.5ms idle=788.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:33:01.238 [debug] QUERY OK source="media_profiles" db=0.4ms idle=788.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] 20:33:01.239 [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 [] 20:33:01.239 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 20:33:01.240 [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 [] 20:33:01.240 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:33:01.646 [debug] QUERY OK source="media_items" db=3.7ms idle=405.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", "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", "e3XOdq86shM", ...] 20:33:01.654 [debug] QUERY OK source="media_items" db=5.0ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:33:01.658 [debug] QUERY OK source="tasks" db=0.8ms idle=416.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226875, 17, ~U[2026-01-10 09:33:01Z], ~U[2026-01-10 09:33:01Z]] 20:33:01.659 [info] {"args":{"id":17},"id":226851,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":422202,"event":"job:stop","queue_time":517627,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:33:20.042 [info] {"source":"oban","duration":21110,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:33:47.470 [info] GET / 20:33:47.470 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:33:47.471 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=90.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:33:47.472 [debug] QUERY OK source="media_profiles" db=0.3ms idle=22.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:33:47.472 [debug] QUERY OK source="sources" db=0.2ms idle=22.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:33:47.533 [debug] QUERY OK source="media_items" db=60.8ms idle=23.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:33:47.539 [debug] QUERY OK source="media_items" db=5.0ms queue=0.1ms idle=84.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:33:47.540 [debug] QUERY OK source="settings" db=0.4ms idle=68.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:33:47.540 [debug] QUERY OK source="settings" db=0.1ms idle=68.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:33:47.541 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:33:47.554 [debug] QUERY OK source="media_items" db=10.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 (NOT (m0."media_filepath" IS NULL)) [] 20:33:47.556 [debug] QUERY OK source="media_items" db=1.6ms idle=15.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:33:47.558 [debug] QUERY OK source="sources" db=1.0ms idle=16.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 (?,?,?)) [12, 15, 6] 20:33:47.620 [debug] QUERY OK source="media_items" db=57.8ms idle=21.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:33:47.623 [debug] QUERY OK source="media_items" db=2.8ms queue=0.1ms idle=78.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] 20:33:47.625 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=71.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] 20:33:47.631 [debug] QUERY OK source="tasks" db=0.7ms idle=74.5ms 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"] 20:33:47.633 [info] Sent 200 in 163ms 20:33:50.052 [info] {"source":"oban","duration":9149,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:33:51.398 [info] {"args":{"id":16},"id":226852,"meta":{},"system_time":1768037631398369145,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:33:51.399 [debug] QUERY OK source="sources" db=0.8ms idle=1949.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] 20:33:51.403 [debug] QUERY OK source="settings" db=3.4ms queue=0.1ms idle=1348.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:33:51.404 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1015.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] 20:33:51.407 [debug] QUERY OK source="settings" db=3.0ms idle=13.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:33:51.408 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 20:33:51.408 [debug] QUERY OK source="settings" db=0.1ms 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 [] 20:33:51.408 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:33:51.809 [debug] QUERY OK source="media_items" db=2.8ms idle=406.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, "9T4hx4KjyQ8", "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", ...] 20:33:51.816 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=410.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] 20:33:51.822 [debug] QUERY OK source="tasks" db=1.2ms idle=412.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226876, 16, ~U[2026-01-10 09:33:51Z], ~U[2026-01-10 09:33:51Z]] 20:33:51.824 [info] {"args":{"id":16},"id":226852,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":424443,"event":"job:stop","queue_time":478761,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:33:52.407 [info] {"args":{"id":9},"id":226853,"meta":{},"system_time":1768037632406960720,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:33:52.408 [debug] QUERY OK source="sources" db=0.8ms queue=0.2ms idle=585.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] 20:33:52.410 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=585.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:33:52.411 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=577.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] 20:33:52.411 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms 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 [] 20:33:52.411 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 20:33:52.412 [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 [] 20:33:52.412 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:33:52.996 [debug] QUERY OK source="media_items" db=4.5ms idle=582.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, "16b4SEeZ45I", "el_J4DE8WnA", "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", ...] 20:33:53.006 [debug] QUERY OK source="media_items" db=6.2ms idle=589.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] 20:33:53.011 [debug] QUERY OK source="tasks" db=0.8ms idle=597.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226877, 9, ~U[2026-01-10 09:33:53Z], ~U[2026-01-10 09:33:53Z]] 20:33:53.012 [info] {"args":{"id":9},"id":226853,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":604629,"event":"job:stop","queue_time":411022,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:34:00.054 [info] {"source":"oban","duration":345,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:34:17.479 [info] {"args":{"id":20},"id":226854,"meta":{},"system_time":1768037657479372143,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:34:17.481 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=1030.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] 20:34:17.482 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:34:17.484 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms idle=33.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] 20:34:17.485 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:34:17.485 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 20:34:17.486 [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 [] 20:34:17.486 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:34:17.929 [debug] QUERY OK source="media_items" db=5.7ms queue=0.1ms idle=442.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", ...] 20:34:17.942 [debug] QUERY OK source="media_items" db=9.5ms 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] 20:34:17.948 [debug] QUERY OK source="tasks" db=1.2ms idle=460.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226878, 20, ~U[2026-01-10 09:34:17Z], ~U[2026-01-10 09:34:17Z]] 20:34:17.949 [info] {"args":{"id":20},"id":226854,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":469224,"event":"job:stop","queue_time":440954,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:34:20.076 [info] {"source":"oban","duration":22767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:34:27.513 [info] {"args":{"id":7},"id":226859,"meta":{},"system_time":1768037667513305802,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:34:27.514 [debug] QUERY OK source="sources" db=0.4ms idle=64.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] 20:34:27.515 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=65.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:27.516 [debug] QUERY OK source="media_profiles" db=0.3ms idle=66.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] 20:34:27.517 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:34:27.517 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 20:34:27.517 [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 [] 20:34:27.518 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:34:27.915 [debug] QUERY OK source="media_items" db=3.6ms idle=397.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, "EzCiEv1IqiA", "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", ...] 20:34:27.925 [debug] QUERY OK source="media_items" db=4.7ms queue=0.1ms idle=405.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] 20:34:27.932 [debug] QUERY OK source="tasks" db=0.6ms idle=413.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226879, 8350, ~U[2026-01-10 09:34:27Z], ~U[2026-01-10 09:34:27Z]] 20:34:27.937 [debug] QUERY OK source="tasks" db=0.4ms idle=6.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226880, 8380, ~U[2026-01-10 09:34:27Z], ~U[2026-01-10 09:34:27Z]] 20:34:27.941 [info] {"args":{"id":8380},"id":226880,"meta":{},"system_time":1768037667941175828,"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"]} 20:34:27.941 [info] {"args":{"id":8350},"id":226879,"meta":{},"system_time":1768037667940963481,"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"]} 20:34:27.942 [debug] QUERY OK source="media_items" db=1.1ms 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" = ?) [8380] 20:34:27.942 [debug] QUERY OK source="media_items" db=1.2ms idle=5.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] 20:34:27.943 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:34:27.943 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:34:27.944 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms 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" = ?) [7] 20:34:27.945 [debug] QUERY OK source="tasks" db=1.7ms queue=0.2ms idle=2.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226881, 8401, ~U[2026-01-10 09:34:27Z], ~U[2026-01-10 09:34:27Z]] 20:34:27.946 [debug] QUERY OK source="sources" db=2.0ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 20:34:27.946 [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] 20:34:27.948 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.3ms 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] 20:34:27.948 [debug] QUERY OK source="media_items" db=0.9ms 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 [8350] 20:34:27.950 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [8350] 20:34:27.951 [debug] QUERY OK source="media_items" db=2.2ms 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] 20:34:27.952 [debug] QUERY OK source="media_profiles" db=1.1ms queue=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] 20:34:27.953 [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 [] 20:34:27.953 [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] 20:34:27.954 [debug] QUERY OK source="settings" db=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 [] 20:34:27.954 [debug] QUERY OK source="tasks" db=1.4ms queue=0.2ms idle=2.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226882, 8418, ~U[2026-01-10 09:34:27Z], ~U[2026-01-10 09:34:27Z]] 20:34:27.954 [debug] Running yt-dlp command for action: get_downloadable_status 20:34:27.955 [debug] QUERY OK source="media_profiles" db=0.9ms 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] 20:34:27.956 [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 [] 20:34:27.956 [debug] QUERY OK source="settings" db=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 [] 20:34:27.957 [debug] Running yt-dlp command for action: get_downloadable_status 20:34:27.957 [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 [] 20:34:27.958 [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 [] 20:34:27.958 [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 [] 20:34:27.959 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:34:27.959 [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/0f/92/0f92cc705d505842b6026157738da6df7b530004973f53efed0ac0037b9c720e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:34:27.959 [debug] QUERY OK source="tasks" db=0.7ms queue=0.2ms idle=1.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226883, 7, ~U[2026-01-10 09:34:27Z], ~U[2026-01-10 09:34:27Z]] 20:34:27.959 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:34:27.960 [info] {"args":{"id":7},"id":226859,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":446367,"event":"job:stop","queue_time":440721,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:34:27.960 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:34:27.960 [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/e6/a0/e6a0a8ef4f843fc5adcc4c660c16588a57c3b594b108717f3fd57846c27289e8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:34:33.724 [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/e6/a0/e6a0a8ef4f843fc5adcc4c660c16588a57c3b594b108717f3fd57846c27289e8.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 20:34:33.725 [debug] QUERY OK source="settings" db=0.3ms idle=275.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.725 [debug] QUERY OK source="settings" db=0.2ms idle=276.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.726 [debug] Running yt-dlp command for action: get_downloadable_status 20:34:33.728 [debug] QUERY OK source="settings" db=0.3ms idle=278.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.728 [debug] QUERY OK source="settings" db=0.2ms idle=278.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.729 [debug] QUERY OK source="settings" db=0.5ms idle=204.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.729 [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/11/88/118824b94cd7e647a5662589774ca4dc031066b4b3b383419ddff4823f02d3d1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:34:33.747 [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/0f/92/0f92cc705d505842b6026157738da6df7b530004973f53efed0ac0037b9c720e.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 20:34:33.748 [debug] QUERY OK source="settings" db=0.4ms idle=22.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.748 [debug] QUERY OK source="settings" db=0.3ms idle=22.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.749 [debug] Running yt-dlp command for action: get_downloadable_status 20:34:33.751 [debug] QUERY OK source="settings" db=0.3ms idle=23.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.752 [debug] QUERY OK source="settings" db=0.3ms idle=23.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.752 [debug] QUERY OK source="settings" db=0.4ms idle=23.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:33.752 [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/d6/a8/d6a8ac1849defd9c874b7df838176ab4d1e6697dfb5962dc8d026860e66b3ea9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:34:39.086 [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/11/88/118824b94cd7e647a5662589774ca4dc031066b4b3b383419ddff4823f02d3d1.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 20:34:39.086 [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" 20:34:39.087 [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" 20:34:39.088 [info] {"args":{"id":8380},"id":226880,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11146055,"event":"job:stop","queue_time":937124,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:34:39.096 [info] {"args":{"id":8401},"id":226881,"meta":{},"system_time":1768037679095862359,"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"]} 20:34:39.096 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=1646.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] 20:34:39.097 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:34:39.106 [debug] QUERY OK source="sources" db=9.0ms idle=1554.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] 20:34:39.108 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=562.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] 20:34:39.110 [debug] QUERY OK source="media_items" db=0.9ms idle=20.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] 20:34:39.112 [debug] QUERY OK source="media_metadata" db=0.6ms idle=15.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] 20:34:39.113 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms 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] 20:34:39.115 [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 [] 20:34:39.116 [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 [] 20:34:39.117 [debug] Running yt-dlp command for action: get_downloadable_status 20:34:39.122 [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 [] 20:34:39.122 [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 [] 20:34:39.123 [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 [] 20:34:39.124 [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/39/af/39afba27faa58022e1d5701b6bcd6d5897bbdde84e85db09c6b9a9937a5f64a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:34:39.299 [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/d6/a8/d6a8ac1849defd9c874b7df838176ab4d1e6697dfb5962dc8d026860e66b3ea9.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 20:34:39.299 [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" 20:34:39.299 [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" 20:34:39.300 [info] {"args":{"id":8350},"id":226879,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11358819,"event":"job:stop","queue_time":937124,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:34:39.308 [info] {"args":{"id":8418},"id":226882,"meta":{},"system_time":1768037679307944006,"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"]} 20:34:39.309 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=186.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] 20:34:39.310 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:34:39.311 [debug] QUERY OK source="sources" db=0.9ms idle=187.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] 20:34:39.312 [debug] QUERY OK source="media_profiles" db=0.7ms idle=188.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] 20:34:39.314 [debug] QUERY OK source="media_items" db=1.3ms idle=12.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] 20:34:39.317 [debug] QUERY OK source="media_metadata" db=0.3ms idle=9.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] 20:34:39.319 [debug] QUERY OK source="media_profiles" db=1.3ms queue=0.1ms idle=8.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] 20:34:39.321 [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 [] 20:34:39.321 [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 [] 20:34:39.322 [debug] Running yt-dlp command for action: get_downloadable_status 20:34:39.325 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:34:39.326 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:34:39.327 [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 [] 20:34:39.327 [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/0c/f9/0cf9227616859ca6a2b8af752e713ddf9ceb273df809021daa85ca305b4fabd2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:34:44.818 [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/0c/f9/0cf9227616859ca6a2b8af752e713ddf9ceb273df809021daa85ca305b4fabd2.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 20:34:44.820 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=370.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:44.821 [debug] QUERY OK source="settings" db=0.4ms idle=371.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:44.822 [debug] Running yt-dlp command for action: get_downloadable_status 20:34:44.824 [debug] QUERY OK source="settings" db=0.3ms idle=374.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:44.824 [debug] QUERY OK source="settings" db=0.4ms idle=374.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:44.825 [debug] QUERY OK source="settings" db=0.3ms idle=256.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:44.825 [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/35/ae/35ae43ce22e217c8bbaa23272459e6ddbfcb557140900b3c92d0fd553fe8dd5f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:34:46.045 [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/39/af/39afba27faa58022e1d5701b6bcd6d5897bbdde84e85db09c6b9a9937a5f64a5.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 20:34:46.046 [debug] QUERY OK source="settings" db=0.5ms idle=1224.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:46.047 [debug] QUERY OK source="settings" db=0.4ms idle=1222.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:46.047 [debug] Running yt-dlp command for action: get_downloadable_status 20:34:46.049 [debug] QUERY OK source="settings" db=0.2ms idle=1224.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:46.049 [debug] QUERY OK source="settings" db=0.2ms idle=1224.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:46.050 [debug] QUERY OK source="settings" db=0.2ms idle=476.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:46.050 [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/23/1f/231f2b86324753c27b72b56fd2bc4f23139dc2c7f530cacb3875d4239679acbf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:34:47.802 [info] GET / 20:34:47.802 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:34:47.803 [debug] QUERY OK source="settings" db=1.2ms 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 [] 20:34:47.804 [debug] QUERY OK source="media_profiles" db=0.6ms idle=354.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:34:47.805 [debug] QUERY OK source="sources" db=0.3ms idle=355.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:34:47.861 [debug] QUERY OK source="media_items" db=55.8ms idle=356.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:34:47.864 [debug] QUERY OK source="media_items" db=3.1ms queue=0.1ms idle=280.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:34:47.865 [debug] QUERY OK source="settings" db=0.2ms idle=61.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:47.866 [debug] QUERY OK source="settings" db=0.2ms idle=61.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:47.867 [debug] QUERY OK source="settings" db=0.1ms idle=61.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:47.871 [debug] QUERY OK source="media_items" db=3.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 (NOT (m0."media_filepath" IS NULL)) [] 20:34:47.872 [debug] QUERY OK source="media_items" db=0.5ms idle=6.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:34:47.874 [debug] QUERY OK source="sources" db=1.1ms 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 (?,?,?)) [12, 15, 6] 20:34:47.945 [debug] QUERY OK source="media_items" db=68.1ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:34:47.948 [debug] QUERY OK source="media_items" db=2.4ms queue=0.1ms idle=78.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] 20:34:47.949 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=78.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] 20:34:47.953 [debug] QUERY OK source="tasks" db=0.8ms idle=80.6ms 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"] 20:34:47.955 [debug] QUERY OK source="media_items" db=1.0ms idle=80.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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [8401, 8418] 20:34:47.957 [info] Sent 200 in 155ms 20:34:50.097 [info] {"source":"oban","duration":20800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:34:50.139 [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/35/ae/35ae43ce22e217c8bbaa23272459e6ddbfcb557140900b3c92d0fd553fe8dd5f.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 20:34:50.139 [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" 20:34:50.139 [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" 20:34:50.140 [info] {"args":{"id":8418},"id":226882,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10832003,"event":"job:stop","queue_time":12306270,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:34:51.522 [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/23/1f/231f2b86324753c27b72b56fd2bc4f23139dc2c7f530cacb3875d4239679acbf.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 20:34:51.523 [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" 20:34:51.523 [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" 20:34:51.524 [info] {"args":{"id":8401},"id":226881,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":12427797,"event":"job:stop","queue_time":12094161,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:34:59.632 [info] {"args":{"id":11},"id":226860,"meta":{},"system_time":1768037699632489081,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:34:59.633 [debug] QUERY OK source="sources" db=0.4ms idle=183.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" = ?) [11] 20:34:59.634 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=184.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:34:59.635 [debug] QUERY OK source="media_profiles" db=0.4ms idle=185.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] 20:34:59.636 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:34:59.636 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 20:34:59.637 [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 [] 20:34:59.637 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:35:00.055 [info] {"source":"oban","duration":338,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:35:00.146 [debug] QUERY OK source="media_items" db=3.0ms 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 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "VSW2XDMy1n4", "IAT_Zf2PCL4", "-xT57w8ZS8U", "EdS_OqCQSew", "FwEJK_d8y8c", "X07XF175FSA", "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", ...] 20:35:00.155 [debug] QUERY OK source="media_items" db=4.8ms idle=514.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] 20:35:00.161 [debug] QUERY OK source="tasks" db=0.8ms idle=14.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226884, 11, ~U[2026-01-10 09:35:00Z], ~U[2026-01-10 09:35:00Z]] 20:35:00.162 [info] {"args":{"id":11},"id":226860,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":529304,"event":"job:stop","queue_time":422904,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:35:17.688 [info] {"args":{"id":25},"id":226861,"meta":{},"system_time":1768037717688357832,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:35:17.689 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=239.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" = ?) [25] 20:35:17.690 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=240.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:35:17.691 [debug] QUERY OK source="media_profiles" db=0.4ms idle=241.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] 20:35:17.692 [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 [] 20:35:17.692 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 20:35:17.693 [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 [] 20:35:17.693 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:35:18.032 [debug] QUERY OK source="media_items" db=3.6ms 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 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"] 20:35:18.034 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:35:18.038 [debug] QUERY OK source="tasks" db=0.5ms idle=344.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226885, 25, ~U[2026-01-10 09:35:18Z], ~U[2026-01-10 09:35:18Z]] 20:35:18.039 [info] {"args":{"id":25},"id":226861,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":350297,"event":"job:stop","queue_time":578616,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:35:20.121 [info] {"source":"oban","duration":23501,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:35:36.758 [info] {"args":{"id":2},"id":226862,"meta":{},"system_time":1768037736758503162,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:35:36.760 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=1309.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] 20:35:36.761 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1311.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:35:36.762 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1017.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] 20:35:36.764 [debug] QUERY OK source="settings" db=1.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 [] 20:35:36.764 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 20:35:36.765 [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 [] 20:35:36.765 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:35:37.357 [debug] QUERY OK source="media_items" db=4.7ms idle=591.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, "Usk1j8IT7ww", "eIpWmOMdYMA", "M08XtzkUg2A", "XC32_9oNoeQ", "gVqE98_flmc", "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", ...] 20:35:37.376 [debug] QUERY OK source="media_items" db=15.7ms idle=599.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] 20:35:37.382 [debug] QUERY OK source="tasks" db=1.3ms idle=615.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226886, 2, ~U[2026-01-10 09:35:37Z], ~U[2026-01-10 09:35:37Z]] 20:35:37.383 [info] {"args":{"id":2},"id":226862,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":623878,"event":"job:stop","queue_time":375123,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:35:48.057 [info] GET / 20:35:48.057 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:35:48.059 [debug] QUERY OK source="settings" db=1.2ms idle=1608.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:35:48.060 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=1609.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:35:48.061 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1611.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:35:48.125 [debug] QUERY OK source="media_items" db=63.3ms queue=0.1ms idle=1275.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:35:48.136 [debug] QUERY OK source="media_items" db=10.6ms queue=0.1ms idle=336.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:35:48.137 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=78.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:35:48.138 [debug] QUERY OK source="settings" db=0.4ms idle=78.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:35:48.139 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=78.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:35:48.150 [debug] QUERY OK source="media_items" db=8.9ms queue=0.1ms idle=16.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)) [] 20:35:48.152 [debug] QUERY OK source="media_items" db=1.8ms idle=14.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] 20:35:48.154 [debug] QUERY OK source="sources" db=0.9ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:35:48.219 [debug] QUERY OK source="media_items" db=58.7ms idle=21.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"))) [] 20:35:48.222 [debug] QUERY OK source="media_items" db=2.1ms queue=0.2ms idle=80.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] 20:35:48.224 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=73.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] 20:35:48.229 [debug] QUERY OK source="tasks" db=0.4ms idle=76.6ms 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"] 20:35:48.231 [info] Sent 200 in 173ms 20:35:50.134 [info] {"source":"oban","duration":11867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:36:00.056 [info] {"source":"oban","duration":289,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:36:20.145 [info] {"source":"oban","duration":10545,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:36:41.969 [info] {"args":{"id":1},"id":226863,"meta":{},"system_time":1768037801968778887,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:36:41.970 [debug] QUERY OK source="sources" db=1.4ms idle=519.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] 20:36:41.977 [debug] QUERY OK source="settings" db=6.4ms queue=0.1ms 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 [] 20:36:41.979 [debug] QUERY OK source="media_profiles" db=1.4ms idle=528.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] 20:36:41.980 [debug] QUERY OK source="settings" db=0.5ms idle=26.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:36:41.980 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 20:36:41.981 [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 [] 20:36:41.981 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:36:42.322 [debug] QUERY OK source="media_items" db=5.2ms idle=346.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "W4asNKhu7Nk", "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", ...] 20:36:42.330 [debug] QUERY OK source="media_items" db=5.8ms idle=347.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] 20:36:42.335 [debug] QUERY OK source="tasks" db=0.8ms idle=353.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226887, 1, ~U[2026-01-10 09:36:42Z], ~U[2026-01-10 09:36:42Z]] 20:36:42.336 [info] {"args":{"id":1},"id":226863,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":366613,"event":"job:stop","queue_time":406529,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:36:48.361 [info] GET / 20:36:48.361 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:36:48.363 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=912.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:36:48.363 [debug] QUERY OK source="media_profiles" db=0.3ms idle=913.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:36:48.364 [debug] QUERY OK source="sources" db=0.2ms idle=914.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:36:48.425 [debug] QUERY OK source="media_items" db=61.0ms idle=914.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:36:48.429 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=448.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:36:48.429 [debug] QUERY OK source="settings" db=0.2ms idle=66.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:36:48.430 [debug] QUERY OK source="settings" db=0.5ms idle=65.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:36:48.430 [debug] QUERY OK source="settings" db=0.2ms idle=66.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:36:48.434 [debug] QUERY OK source="media_items" db=3.2ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:36:48.435 [debug] QUERY OK source="media_items" db=0.5ms idle=6.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] 20:36:48.436 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:36:48.473 [debug] QUERY OK source="media_items" db=33.7ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:36:48.475 [debug] QUERY OK source="media_items" db=1.9ms idle=42.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:36:48.476 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=41.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] 20:36:48.479 [debug] QUERY OK source="tasks" db=0.4ms idle=43.6ms 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"] 20:36:48.480 [info] Sent 200 in 119ms 20:36:50.169 [info] {"source":"oban","duration":23127,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:36:50.999 [info] {"args":{"id":19},"id":226864,"meta":{},"system_time":1768037810999527528,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:36:51.001 [debug] QUERY OK source="sources" db=0.7ms idle=550.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" = ?) [19] 20:36:51.006 [debug] QUERY OK source="settings" db=4.7ms queue=0.1ms idle=552.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:36:51.007 [debug] QUERY OK source="media_profiles" db=0.4ms idle=557.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] 20:36:51.015 [debug] QUERY OK source="settings" db=7.0ms queue=0.1ms idle=19.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:36:51.015 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 20:36:51.017 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=16.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:36:51.017 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:36:51.373 [debug] QUERY OK source="media_items" db=2.2ms idle=369.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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"] 20:36:51.377 [debug] QUERY OK source="media_items" db=1.8ms 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")))) [19] 20:36:51.381 [debug] QUERY OK source="tasks" db=0.7ms idle=363.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226888, 19, ~U[2026-01-10 09:36:51Z], ~U[2026-01-10 09:36:51Z]] 20:36:51.382 [info] {"args":{"id":19},"id":226864,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":382450,"event":"job:stop","queue_time":570109,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:37:00.057 [info] {"source":"oban","duration":323,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:37:20.194 [info] {"source":"oban","duration":23989,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:37:43.136 [info] {"args":{"id":26},"id":226865,"meta":{},"system_time":1768037863136530724,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:37:43.137 [debug] QUERY OK source="sources" db=0.9ms idle=1014.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" = ?) [26] 20:37:43.138 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=688.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:37:43.139 [debug] QUERY OK source="media_profiles" db=0.6ms idle=689.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] 20:37:43.140 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:37:43.140 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 20:37:43.141 [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 [] 20:37:43.141 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:37:43.628 [debug] QUERY OK source="media_items" db=5.0ms queue=0.1ms idle=484.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "UO8_-B-383w", "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", ...] 20:37:43.639 [debug] QUERY OK source="media_items" db=7.9ms idle=492.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] 20:37:43.644 [debug] QUERY OK source="tasks" db=0.8ms idle=502.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226889, 26, ~U[2026-01-10 09:37:43Z], ~U[2026-01-10 09:37:43Z]] 20:37:43.645 [info] {"args":{"id":26},"id":226865,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":508069,"event":"job:stop","queue_time":370559,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:37:48.632 [info] GET / 20:37:48.632 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:37:48.633 [debug] QUERY OK source="settings" db=0.5ms idle=1183.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:37:48.634 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1184.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:37:48.634 [debug] QUERY OK source="sources" db=0.3ms idle=1185.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:37:48.696 [debug] QUERY OK source="media_items" db=61.4ms idle=1185.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:37:48.701 [debug] QUERY OK source="media_items" db=4.4ms idle=557.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:37:48.702 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:37:48.703 [debug] QUERY OK source="settings" db=0.4ms idle=68.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:37:48.704 [debug] QUERY OK source="settings" db=0.7ms idle=68.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:37:48.715 [debug] QUERY OK source="media_items" db=10.5ms idle=8.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 (NOT (m0."media_filepath" IS NULL)) [] 20:37:48.718 [debug] QUERY OK source="media_items" db=1.8ms idle=14.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:37:48.720 [debug] QUERY OK source="sources" db=0.8ms idle=16.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" IN (?,?,?)) [12, 15, 6] 20:37:48.790 [debug] QUERY OK source="media_items" db=64.2ms idle=22.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:37:48.793 [debug] QUERY OK source="media_items" db=1.9ms queue=0.3ms idle=86.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] 20:37:48.795 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=79.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] 20:37:48.801 [debug] QUERY OK source="tasks" db=0.4ms idle=82.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"] 20:37:48.803 [info] Sent 200 in 170ms 20:37:50.205 [info] {"source":"oban","duration":9746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:37:55.165 [info] {"args":{"id":15},"id":226866,"meta":{},"system_time":1768037875165085588,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:37:55.169 [debug] QUERY OK source="sources" db=3.9ms idle=716.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] 20:37:55.171 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=720.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:37:55.172 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=722.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] 20:37:55.176 [debug] QUERY OK source="settings" db=3.6ms queue=0.1ms 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 [] 20:37:55.177 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 20:37:55.178 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:37:55.178 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:37:55.659 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=486.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, "OCnm1p7J38Q", "javP2Zg24jM", "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", ...] 20:37:55.667 [debug] QUERY OK source="media_items" db=4.2ms idle=492.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")))) [15] 20:37:55.673 [debug] QUERY OK source="tasks" db=1.1ms idle=494.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226890, 15, ~U[2026-01-10 09:37:55Z], ~U[2026-01-10 09:37:55Z]] 20:37:55.675 [info] {"args":{"id":15},"id":226866,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":508857,"event":"job:stop","queue_time":409054,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:38:00.058 [info] {"source":"oban","duration":604,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:38:19.243 [info] {"args":{"id":3},"id":226867,"meta":{},"system_time":1768037899242899746,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:38:19.243 [debug] QUERY OK source="sources" db=0.5ms idle=1793.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] 20:38:19.244 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1794.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:38:19.245 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1013.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] 20:38:19.245 [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 [] 20:38:19.246 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 20:38:19.246 [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 [] 20:38:19.246 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:38:19.725 [debug] QUERY OK source="media_items" db=2.2ms idle=479.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, "rzQeUM-lMUY", "BkUHm95UvCw", "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", ...] 20:38:19.735 [debug] QUERY OK source="media_items" db=7.8ms idle=482.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] 20:38:19.737 [debug] QUERY OK source="tasks" db=0.5ms idle=490.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226891, 3, ~U[2026-01-10 09:38:19Z], ~U[2026-01-10 09:38:19Z]] 20:38:19.739 [info] {"args":{"id":3},"id":226867,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":494935,"event":"job:stop","queue_time":398140,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:38:20.225 [info] {"source":"oban","duration":19045,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:38:48.950 [info] GET / 20:38:48.951 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:38:48.952 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1502.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:38:48.953 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=1503.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:38:48.954 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=1504.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:38:48.985 [debug] QUERY OK source="media_items" db=30.4ms queue=0.1ms idle=1505.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:38:48.989 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms idle=651.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:38:48.990 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=37.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:38:48.991 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=37.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:38:48.993 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=38.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:38:48.998 [debug] QUERY OK source="media_items" db=3.6ms 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)) [] 20:38:49.000 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:38:49.002 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=10.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 (?,?,?)) [12, 15, 6] 20:38:49.050 [debug] QUERY OK source="media_items" db=39.5ms idle=18.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"))) [] 20:38:49.052 [debug] QUERY OK source="media_items" db=1.9ms queue=0.2ms idle=57.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:38:49.054 [debug] QUERY OK source="sources" db=0.4ms idle=55.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] 20:38:49.057 [debug] QUERY OK source="tasks" db=0.4ms idle=57.1ms 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"] 20:38:49.058 [info] Sent 200 in 107ms 20:38:50.235 [info] {"source":"oban","duration":9524,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:39:00.060 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:39:03.382 [info] {"args":{"id":22},"id":226868,"meta":{},"system_time":1768037943381920402,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:39:03.383 [debug] QUERY OK source="sources" db=1.0ms idle=1014.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] 20:39:03.384 [debug] QUERY OK source="settings" db=0.5ms idle=934.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:03.388 [debug] QUERY OK source="media_profiles" db=3.5ms idle=935.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] 20:39:03.389 [debug] QUERY OK source="settings" db=0.7ms idle=17.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:03.389 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 20:39:03.390 [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 [] 20:39:03.390 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:39:03.706 [debug] QUERY OK source="media_items" db=2.9ms idle=319.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"] 20:39:03.708 [debug] QUERY OK source="settings" db=0.8ms idle=322.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:03.709 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:39:03.709 [debug] Running yt-dlp command for action: get_media_attributes 20:39:03.713 [debug] QUERY OK source="settings" db=0.6ms idle=322.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:03.714 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=322.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:03.715 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:39:03.716 [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/73/d6/73d6d84946ded21e65b7bb36dfa7579062d864560e5e0c770c5dd7d6748f101a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:39:08.636 [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/73/d6/73d6d84946ded21e65b7bb36dfa7579062d864560e5e0c770c5dd7d6748f101a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 20:39:08.636 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 20:39:08.639 [debug] QUERY OK source="media_items" db=1.8ms queue=0.1ms idle=1187.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] 20:39:08.645 [debug] QUERY OK source="tasks" db=1.2ms queue=0.1ms idle=1194.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226892, 22, ~U[2026-01-10 09:39:08Z], ~U[2026-01-10 09:39:08Z]] 20:39:08.647 [info] {"args":{"id":22},"id":226868,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5263964,"event":"job:stop","queue_time":93482,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:39:10.405 [info] {"args":{"id":18},"id":226869,"meta":{},"system_time":1768037950405483481,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:39:10.406 [debug] QUERY OK source="sources" db=0.7ms idle=1758.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] 20:39:10.407 [debug] QUERY OK source="settings" db=0.4ms idle=1751.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:10.408 [debug] QUERY OK source="media_profiles" db=0.7ms 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] 20:39:10.408 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:39:10.409 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 20:39:10.409 [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 [] 20:39:10.409 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:39:10.834 [debug] QUERY OK source="media_items" db=5.3ms queue=0.1ms idle=421.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "XCGRhxHrjWg", "fyWYr4PukJY", "-w4HeclDfgE", "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", ...] 20:39:10.844 [debug] QUERY OK source="media_items" db=6.3ms idle=430.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] 20:39:10.849 [debug] QUERY OK source="tasks" db=0.9ms idle=438.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226893, 18, ~U[2026-01-10 09:39:10Z], ~U[2026-01-10 09:39:10Z]] 20:39:10.850 [info] {"args":{"id":18},"id":226869,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":444261,"event":"job:stop","queue_time":461096,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:39:20.258 [info] {"source":"oban","duration":22050,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:39:50.266 [info] {"source":"oban","duration":7473,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:39:51.898 [info] GET / 20:39:51.898 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:39:51.899 [debug] QUERY OK source="settings" db=0.5ms idle=1449.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:51.900 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1450.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:39:51.901 [debug] QUERY OK source="sources" db=0.5ms idle=1395.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:39:51.963 [debug] QUERY OK source="media_items" db=61.9ms idle=452.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:39:51.967 [debug] QUERY OK source="media_items" db=3.2ms idle=456.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:39:51.968 [debug] QUERY OK source="settings" db=0.4ms idle=67.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:51.968 [debug] QUERY OK source="settings" db=0.4ms idle=67.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:51.969 [debug] QUERY OK source="settings" db=0.1ms idle=67.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:39:51.973 [debug] QUERY OK source="media_items" db=3.3ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:39:51.974 [debug] QUERY OK source="media_items" db=0.6ms idle=6.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:39:51.976 [debug] QUERY OK source="sources" db=1.0ms 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 (?,?,?)) [12, 15, 6] 20:39:52.045 [debug] QUERY OK source="media_items" db=65.5ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:39:52.047 [debug] QUERY OK source="media_items" db=1.5ms idle=76.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] 20:39:52.048 [debug] QUERY OK source="sources" db=0.3ms idle=73.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 (?,?)) [27, 5] 20:39:52.050 [debug] QUERY OK source="tasks" db=0.4ms idle=74.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"] 20:39:52.050 [info] Sent 200 in 152ms 20:40:00.061 [info] {"source":"oban","duration":257,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:40:07.570 [info] {"args":{"id":23},"id":226870,"meta":{},"system_time":1768038007569746539,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:40:07.571 [debug] QUERY OK source="sources" db=1.2ms idle=120.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] 20:40:07.573 [debug] QUERY OK source="settings" db=1.2ms idle=122.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:40:07.574 [debug] QUERY OK source="media_profiles" db=0.6ms idle=123.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] 20:40:07.581 [debug] QUERY OK source="settings" db=6.4ms queue=0.1ms idle=18.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:40:07.581 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 20:40:07.582 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:40:07.582 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:40:07.924 [debug] QUERY OK source="media_items" db=4.4ms idle=348.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"] 20:40:07.927 [debug] QUERY OK source="media_items" db=1.4ms idle=352.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] 20:40:07.932 [debug] QUERY OK source="tasks" db=1.0ms idle=349.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226894, 23, ~U[2026-01-10 09:40:07Z], ~U[2026-01-10 09:40:07Z]] 20:40:07.934 [info] {"args":{"id":23},"id":226870,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":363345,"event":"job:stop","queue_time":465191,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:40:20.275 [info] {"source":"oban","duration":8491,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:40:50.285 [info] {"source":"oban","duration":9032,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:40:58.058 [info] GET / 20:40:58.058 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:40:58.059 [debug] QUERY OK source="settings" db=0.5ms idle=605.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:40:58.060 [debug] QUERY OK source="media_profiles" db=0.5ms idle=606.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:40:58.061 [debug] QUERY OK source="sources" db=0.3ms idle=606.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:40:58.091 [debug] QUERY OK source="media_items" db=29.8ms idle=607.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:40:58.094 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=391.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:40:58.095 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:40:58.096 [debug] QUERY OK source="settings" db=0.3ms idle=35.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:40:58.097 [debug] QUERY OK source="settings" db=0.2ms idle=36.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:40:58.103 [debug] QUERY OK source="media_items" db=3.6ms queue=0.1ms 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)) [] 20:40:58.104 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=8.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] 20:40:58.106 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=10.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 (?,?,?)) [12, 15, 6] 20:40:58.148 [debug] QUERY OK source="media_items" db=35.8ms idle=16.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:40:58.151 [debug] QUERY OK source="media_items" db=1.9ms queue=0.2ms idle=51.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:40:58.152 [debug] QUERY OK source="sources" db=0.4ms idle=49.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] 20:40:58.159 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=54.2ms 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"] 20:40:58.161 [info] Sent 200 in 103ms 20:41:00.062 [info] {"source":"oban","duration":459,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:41:00.720 [info] {"args":{"id":10},"id":226871,"meta":{},"system_time":1768038060720158001,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:41:00.722 [debug] QUERY OK source="sources" db=1.3ms queue=0.1ms idle=1267.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] 20:41:00.723 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1018.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:00.727 [debug] QUERY OK source="media_profiles" db=3.3ms queue=0.1ms idle=661.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] 20:41:00.728 [debug] QUERY OK source="settings" db=0.3ms idle=19.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:00.728 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 20:41:00.729 [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 [] 20:41:00.729 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:41:01.124 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=397.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "g0z7tR6KdIE", "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", ...] 20:41:01.128 [debug] QUERY OK source="settings" db=0.3ms idle=404.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:01.129 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=400.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:01.129 [debug] Running yt-dlp command for action: get_media_attributes 20:41:01.131 [debug] QUERY OK source="settings" db=0.3ms idle=402.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:01.131 [debug] QUERY OK source="settings" db=0.4ms idle=402.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:01.132 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:41:01.133 [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/64/00/6400cf9bfe2faaeacdd15031294f2a46547c086509c4507fddc0b062b7749f29.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:41:05.881 [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/64/00/6400cf9bfe2faaeacdd15031294f2a46547c086509c4507fddc0b062b7749f29.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. 20:41:05.881 [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} 20:41:05.884 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=1428.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")))) [10] 20:41:05.887 [debug] QUERY OK source="tasks" db=0.4ms idle=1167.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226895, 10, ~U[2026-01-10 09:41:05Z], ~U[2026-01-10 09:41:05Z]] 20:41:05.889 [info] {"args":{"id":10},"id":226871,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5167798,"event":"job:stop","queue_time":767375,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:41:07.738 [info] {"args":{"id":6},"id":226872,"meta":{},"system_time":1768038067738102230,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:41:07.740 [debug] QUERY OK source="sources" db=1.0ms idle=285.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] 20:41:07.741 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=286.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:07.743 [debug] QUERY OK source="media_profiles" db=1.1ms queue=0.1ms idle=288.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] 20:41:07.744 [debug] QUERY OK source="settings" db=0.6ms idle=13.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:07.744 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 20:41:07.745 [debug] QUERY OK source="settings" db=0.9ms 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 [] 20:41:07.746 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:41:08.178 [debug] QUERY OK source="media_items" db=3.1ms queue=0.1ms idle=434.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, "cIrfWaWIByQ", "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", ...] 20:41:08.184 [debug] QUERY OK source="media_items" db=2.3ms idle=440.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] 20:41:08.188 [debug] QUERY OK source="tasks" db=0.5ms idle=441.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226896, 6, ~U[2026-01-10 09:41:08Z], ~U[2026-01-10 09:41:08Z]] 20:41:08.189 [info] {"args":{"id":6},"id":226872,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":450009,"event":"job:stop","queue_time":405113,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:41:09.743 [info] {"args":{"id":24},"id":226873,"meta":{},"system_time":1768038069743629042,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:41:09.744 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=290.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] 20:41:09.745 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms 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 [] 20:41:09.746 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.2ms idle=292.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] 20:41:09.747 [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 [] 20:41:09.747 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 20:41:09.748 [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 [] 20:41:09.749 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:41:10.095 [debug] QUERY OK source="media_items" db=3.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 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", ...] 20:41:10.101 [debug] QUERY OK source="media_items" db=0.8ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:41:10.104 [debug] QUERY OK source="tasks" db=0.7ms idle=355.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226897, 24, ~U[2026-01-10 09:41:10Z], ~U[2026-01-10 09:41:10Z]] 20:41:10.106 [info] {"args":{"id":24},"id":226873,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":361453,"event":"job:stop","queue_time":468898,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:41:20.294 [info] {"source":"oban","duration":7749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:41:50.322 [info] {"source":"oban","duration":26926,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:41:58.396 [info] GET / 20:41:58.396 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:41:58.397 [debug] QUERY OK source="settings" db=0.6ms idle=943.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:58.398 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=944.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:41:58.399 [debug] QUERY OK source="sources" db=0.8ms idle=945.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:41:58.461 [debug] QUERY OK source="media_items" db=61.9ms idle=946.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:41:58.465 [debug] QUERY OK source="media_items" db=3.2ms idle=580.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:41:58.466 [debug] QUERY OK source="settings" db=0.3ms idle=68.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:58.467 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=68.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:58.468 [debug] QUERY OK source="settings" db=0.3ms idle=69.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:41:58.474 [debug] QUERY OK source="media_items" db=3.6ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:41:58.475 [debug] QUERY OK source="media_items" db=0.6ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:41:58.477 [debug] QUERY OK source="sources" db=0.4ms 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 (?,?,?)) [12, 15, 6] 20:41:58.520 [debug] QUERY OK source="media_items" db=35.8ms queue=0.1ms idle=17.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:41:58.523 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=52.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:41:58.524 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=49.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 (?,?)) [27, 5] 20:41:58.531 [debug] QUERY OK source="tasks" db=0.3ms idle=55.2ms 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"] 20:41:58.533 [info] Sent 200 in 136ms 20:42:00.064 [info] {"source":"oban","duration":363,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:42:20.345 [info] {"source":"oban","duration":21905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:42:50.364 [info] {"source":"oban","duration":17871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:42:51.040 [info] {"args":{"id":21},"id":226874,"meta":{},"system_time":1768038171040561125,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:42:51.049 [debug] QUERY OK source="sources" db=7.6ms 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" = ?) [21] 20:42:51.051 [debug] QUERY OK source="settings" db=1.4ms idle=685.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:42:51.052 [debug] QUERY OK source="media_profiles" db=0.4ms idle=598.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] 20:42:51.054 [debug] QUERY OK source="settings" db=2.5ms idle=20.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:42:51.055 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 20:42:51.055 [debug] QUERY OK source="settings" db=0.1ms idle=14.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:42:51.055 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:42:51.422 [debug] QUERY OK source="media_items" db=4.9ms queue=0.1ms idle=367.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, "9t1DPHAoHyw", "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", ...] 20:42:51.429 [debug] QUERY OK source="media_items" db=3.4ms idle=374.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] 20:42:51.434 [debug] QUERY OK source="tasks" db=0.9ms idle=377.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226898, 21, ~U[2026-01-10 09:42:51Z], ~U[2026-01-10 09:42:51Z]] 20:42:51.434 [info] {"args":{"id":21},"id":226874,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":393538,"event":"job:stop","queue_time":241974,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:43:00.065 [info] {"source":"oban","duration":338,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:43:01.926 [info] GET / 20:43:01.926 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:43:01.927 [debug] QUERY OK source="settings" db=0.3ms idle=1473.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:43:01.927 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1474.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:43:01.928 [debug] QUERY OK source="sources" db=0.3ms idle=1474.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:43:01.959 [debug] QUERY OK source="media_items" db=30.3ms idle=866.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:43:01.963 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=506.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:43:01.964 [debug] QUERY OK source="settings" db=0.2ms queue=0.3ms idle=36.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:43:01.965 [debug] QUERY OK source="settings" db=0.3ms idle=36.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:43:01.966 [debug] QUERY OK source="settings" db=0.3ms idle=37.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:43:01.973 [debug] QUERY OK source="media_items" db=5.3ms queue=0.1ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) [] 20:43:01.975 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=11.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] 20:43:01.977 [debug] QUERY OK source="sources" db=0.5ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:43:02.018 [debug] QUERY OK source="media_items" db=35.0ms idle=18.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:43:02.021 [debug] QUERY OK source="media_items" db=1.8ms idle=52.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] 20:43:02.022 [debug] QUERY OK source="sources" db=0.5ms idle=48.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" IN (?,?)) [27, 5] 20:43:02.028 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=52.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"] 20:43:02.029 [info] Sent 200 in 103ms 20:43:02.084 [info] {"args":{"id":17},"id":226875,"meta":{},"system_time":1768038182084761132,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:43:02.086 [debug] QUERY OK source="sources" db=0.8ms idle=63.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] 20:43:02.093 [debug] QUERY OK source="settings" db=6.8ms idle=63.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:43:02.094 [debug] QUERY OK source="media_profiles" db=1.0ms idle=65.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] 20:43:02.095 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:43:02.095 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 20:43:02.096 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:43:02.096 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:43:02.442 [debug] QUERY OK source="media_items" db=3.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "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", "e3XOdq86shM", ...] 20:43:02.448 [debug] QUERY OK source="media_items" db=3.0ms queue=0.1ms idle=352.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] 20:43:02.454 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=357.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226899, 17, ~U[2026-01-10 09:43:02Z], ~U[2026-01-10 09:43:02Z]] 20:43:02.455 [info] {"args":{"id":17},"id":226875,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":369798,"event":"job:stop","queue_time":416922,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:43:20.385 [info] {"source":"oban","duration":20062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:43:50.397 [info] {"source":"oban","duration":10754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:43:52.235 [info] {"args":{"id":16},"id":226876,"meta":{},"system_time":1768038232235188211,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:43:52.236 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1011.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] 20:43:52.237 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=782.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:43:52.239 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=783.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] 20:43:52.239 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:43:52.240 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 20:43:52.240 [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 [] 20:43:52.240 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:43:52.638 [debug] QUERY OK source="media_items" db=3.2ms idle=397.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "9T4hx4KjyQ8", "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", ...] 20:43:52.644 [debug] QUERY OK source="media_items" db=2.1ms 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")))) [16] 20:43:52.648 [debug] QUERY OK source="tasks" db=0.6ms idle=406.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226900, 16, ~U[2026-01-10 09:43:52Z], ~U[2026-01-10 09:43:52Z]] 20:43:52.649 [info] {"args":{"id":16},"id":226876,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":413329,"event":"job:stop","queue_time":416306,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:43:53.239 [info] {"args":{"id":9},"id":226877,"meta":{},"system_time":1768038233239285621,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:43:53.240 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=591.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] 20:43:53.241 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=591.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:43:53.242 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=585.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] 20:43:53.243 [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 [] 20:43:53.243 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 20:43:53.245 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:43:53.245 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:43:53.572 [debug] QUERY OK source="media_items" db=5.2ms queue=0.1ms idle=326.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, "16b4SEeZ45I", "el_J4DE8WnA", "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", ...] 20:43:53.584 [debug] QUERY OK source="media_items" db=7.0ms 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")))) [9] 20:43:53.588 [debug] QUERY OK source="tasks" db=0.8ms idle=342.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226901, 9, ~U[2026-01-10 09:43:53Z], ~U[2026-01-10 09:43:53Z]] 20:43:53.590 [info] {"args":{"id":9},"id":226877,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":349780,"event":"job:stop","queue_time":230227,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:44:00.067 [info] {"source":"oban","duration":804,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:44:02.383 [info] GET / 20:44:02.383 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:44:02.384 [debug] QUERY OK source="settings" db=0.4ms idle=928.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:02.384 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=929.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:44:02.385 [debug] QUERY OK source="sources" db=0.5ms idle=930.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:44:02.442 [debug] QUERY OK source="media_items" db=56.2ms queue=0.1ms idle=931.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:44:02.448 [debug] QUERY OK source="media_items" db=4.9ms idle=184.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:44:02.448 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:44:02.449 [debug] QUERY OK source="settings" db=0.3ms idle=64.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:02.450 [debug] QUERY OK source="settings" db=0.2ms idle=64.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:02.455 [debug] QUERY OK source="media_items" db=3.5ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) [] 20:44:02.456 [debug] QUERY OK source="media_items" db=0.7ms idle=7.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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:44:02.457 [debug] QUERY OK source="sources" db=1.0ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:44:02.528 [debug] QUERY OK source="media_items" db=68.4ms idle=10.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"))) [] 20:44:02.531 [debug] QUERY OK source="media_items" db=1.8ms idle=78.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] 20:44:02.533 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=77.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" IN (?,?)) [27, 5] 20:44:02.541 [debug] QUERY OK source="tasks" db=0.6ms idle=84.2ms 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"] 20:44:02.543 [info] Sent 200 in 159ms 20:44:18.298 [info] {"args":{"id":20},"id":226878,"meta":{},"system_time":1768038258298292375,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:44:18.299 [debug] QUERY OK source="sources" db=0.5ms idle=1844.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" = ?) [20] 20:44:18.303 [debug] QUERY OK source="settings" db=3.4ms idle=1845.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:18.303 [debug] QUERY OK source="media_profiles" db=0.5ms 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] 20:44:18.307 [debug] QUERY OK source="settings" db=3.1ms queue=0.1ms idle=13.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:18.307 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 20:44:18.308 [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 [] 20:44:18.308 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:44:18.737 [debug] QUERY OK source="media_items" db=5.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 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", ...] 20:44:18.748 [debug] QUERY OK source="media_items" db=9.2ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:44:18.754 [debug] QUERY OK source="tasks" db=0.8ms idle=444.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226902, 20, ~U[2026-01-10 09:44:18Z], ~U[2026-01-10 09:44:18Z]] 20:44:18.755 [info] {"args":{"id":20},"id":226878,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":455837,"event":"job:stop","queue_time":352852,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:44:20.422 [info] {"source":"oban","duration":24598,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:44:28.340 [info] {"args":{"id":7},"id":226883,"meta":{},"system_time":1768038268339814742,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:44:28.341 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=1886.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] 20:44:28.343 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1017.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:28.344 [debug] QUERY OK source="media_profiles" db=0.4ms idle=888.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] 20:44:28.344 [debug] QUERY OK source="settings" db=0.3ms idle=13.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:28.345 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 20:44:28.345 [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 [] 20:44:28.345 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:44:28.799 [debug] QUERY OK source="media_items" db=5.1ms queue=0.1ms idle=452.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, "EzCiEv1IqiA", "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", ...] 20:44:28.813 [debug] QUERY OK source="media_items" db=8.8ms idle=460.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] 20:44:28.822 [debug] QUERY OK source="tasks" db=1.1ms queue=0.1ms idle=475.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226903, 8350, ~U[2026-01-10 09:44:28Z], ~U[2026-01-10 09:44:28Z]] 20:44:28.829 [debug] QUERY OK source="tasks" db=1.9ms queue=0.1ms idle=7.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226904, 8380, ~U[2026-01-10 09:44:28Z], ~U[2026-01-10 09:44:28Z]] 20:44:28.831 [info] {"args":{"id":8350},"id":226903,"meta":{},"system_time":1768038268830812266,"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"]} 20:44:28.831 [info] {"args":{"id":8380},"id":226904,"meta":{},"system_time":1768038268830986986,"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"]} 20:44:28.832 [debug] QUERY OK source="media_items" db=1.0ms idle=4.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] 20:44:28.832 [debug] QUERY OK source="media_items" db=1.1ms idle=5.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] 20:44:28.833 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:44:28.833 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:44:28.834 [debug] QUERY OK source="sources" db=1.0ms 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] 20:44:28.834 [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" = ?) [7] 20:44:28.836 [debug] QUERY OK source="tasks" db=0.5ms idle=1.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226905, 8401, ~U[2026-01-10 09:44:28Z], ~U[2026-01-10 09:44:28Z]] 20:44:28.837 [debug] QUERY OK source="media_profiles" db=1.9ms queue=0.4ms 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] 20:44:28.837 [debug] QUERY OK source="media_profiles" db=2.3ms queue=0.1ms 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] 20:44:28.840 [debug] QUERY OK source="media_items" db=2.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 [8350] 20:44:28.841 [debug] QUERY OK source="media_items" db=2.9ms 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 [8380] 20:44:28.843 [debug] QUERY OK source="media_metadata" db=0.6ms idle=5.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] 20:44:28.844 [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" = ?) [8380] 20:44:28.844 [debug] QUERY OK source="media_profiles" db=1.3ms 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] 20:44:28.845 [debug] QUERY OK source="media_profiles" db=0.9ms 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] 20:44:28.846 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:44:28.846 [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 [] 20:44:28.847 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:44:28.848 [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 [] 20:44:28.848 [debug] QUERY OK source="tasks" db=1.0ms idle=0.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226906, 8418, ~U[2026-01-10 09:44:28Z], ~U[2026-01-10 09:44:28Z]] 20:44:28.849 [debug] Running yt-dlp command for action: get_downloadable_status 20:44:28.849 [debug] Running yt-dlp command for action: get_downloadable_status 20:44:28.852 [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 [] 20:44:28.852 [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 [] 20:44:28.853 [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 [] 20:44:28.853 [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 [] 20:44:28.853 [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/ad/d6/add6f310976b43889807c4f47265baf4d639503687b549818a0b2e1d92723a03.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:44:28.853 [debug] QUERY OK source="tasks" db=1.0ms idle=4.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226907, 7, ~U[2026-01-10 09:44:28Z], ~U[2026-01-10 09:44:28Z]] 20:44:28.855 [debug] QUERY OK source="settings" db=1.0ms queue=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 [] 20:44:28.855 [info] {"args":{"id":7},"id":226883,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":514355,"event":"job:stop","queue_time":381630,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:44:28.855 [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 [] 20:44:28.856 [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/62/0162df2640ae121170653124914bc74b8d3a5a8bcb9cf4882175d75911a55f01.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:44:34.051 [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/ad/d6/add6f310976b43889807c4f47265baf4d639503687b549818a0b2e1d92723a03.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 20:44:34.052 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1596.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.053 [debug] QUERY OK source="settings" db=0.4ms idle=1597.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.053 [debug] Running yt-dlp command for action: get_downloadable_status 20:44:34.055 [debug] QUERY OK source="settings" db=0.2ms idle=1599.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.055 [debug] QUERY OK source="settings" db=0.2ms idle=1600.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.056 [debug] QUERY OK source="settings" db=0.2ms idle=706.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.056 [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/22/01/2201a7b8ab997b5b802e435d5dee2e146d72fec90e2a00bbb5b4f027e9340323.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:44:34.541 [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/62/0162df2640ae121170653124914bc74b8d3a5a8bcb9cf4882175d75911a55f01.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 20:44:34.543 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=489.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.544 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=488.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.545 [debug] Running yt-dlp command for action: get_downloadable_status 20:44:34.549 [debug] QUERY OK source="settings" db=0.4ms idle=493.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.550 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=493.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.551 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=196.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:34.551 [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/23/9d/239d678eeacc29a1b15578ac5d8efe088da0fcc52fbe4dfe358fdce54b97c052.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:44:39.503 [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/22/01/2201a7b8ab997b5b802e435d5dee2e146d72fec90e2a00bbb5b4f027e9340323.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 20:44:39.503 [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" 20:44:39.504 [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" 20:44:39.505 [info] {"args":{"id":8350},"id":226903,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10673246,"event":"job:stop","queue_time":827345,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:44:39.513 [info] {"args":{"id":8401},"id":226905,"meta":{},"system_time":1768038279513488770,"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"]} 20:44:39.514 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=1058.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] 20:44:39.515 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:44:39.516 [debug] QUERY OK source="sources" db=0.6ms idle=1059.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] 20:44:39.516 [debug] QUERY OK source="media_profiles" db=0.6ms idle=145.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] 20:44:39.518 [debug] QUERY OK source="media_items" db=1.0ms 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 [8401] 20:44:39.520 [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" = ?) [8401] 20:44:39.520 [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] 20:44:39.521 [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 [] 20:44:39.522 [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 [] 20:44:39.522 [debug] Running yt-dlp command for action: get_downloadable_status 20:44:39.524 [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 [] 20:44:39.525 [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 [] 20:44:39.525 [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 [] 20:44:39.526 [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/98/53/98535aab24ffb4404ba7324a4c260ec72552f3f6668d739c2cd89607242c3859.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:44:39.870 [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/23/9d/239d678eeacc29a1b15578ac5d8efe088da0fcc52fbe4dfe358fdce54b97c052.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 20:44:39.870 [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" 20:44:39.871 [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" 20:44:39.872 [info] {"args":{"id":8380},"id":226904,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11040467,"event":"job:stop","queue_time":827345,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:44:39.881 [info] {"args":{"id":8418},"id":226906,"meta":{},"system_time":1768038279880955091,"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"]} 20:44:39.884 [debug] QUERY OK source="media_items" db=1.3ms queue=0.3ms idle=357.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] 20:44:39.884 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:44:39.886 [debug] QUERY OK source="sources" db=1.2ms idle=359.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] 20:44:39.887 [debug] QUERY OK source="media_profiles" db=0.5ms idle=360.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] 20:44:39.888 [debug] QUERY OK source="media_items" db=0.5ms idle=15.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 [8418] 20:44:39.890 [debug] QUERY OK source="media_metadata" db=0.1ms idle=9.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] 20:44:39.891 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 20:44:39.892 [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 [] 20:44:39.892 [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 [] 20:44:39.893 [debug] Running yt-dlp command for action: get_downloadable_status 20:44:39.894 [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 [] 20:44:39.895 [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 [] 20:44:39.895 [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 [] 20:44:39.896 [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/4c/27/4c27f1dd10e182008ccbece6919c4249d24e84f7d03c05a572e1d11cda81f051.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:44:45.263 [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/4c/27/4c27f1dd10e182008ccbece6919c4249d24e84f7d03c05a572e1d11cda81f051.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 20:44:45.265 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1809.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:45.266 [debug] QUERY OK source="settings" db=0.3ms idle=1810.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:45.266 [debug] Running yt-dlp command for action: get_downloadable_status 20:44:45.269 [debug] QUERY OK source="settings" db=0.6ms idle=1813.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:45.269 [debug] QUERY OK source="settings" db=0.4ms idle=1814.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:45.270 [debug] QUERY OK source="settings" db=0.3ms idle=882.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:45.270 [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/d7/a1/d7a1cf2f736f24ec5f6d843aec95d0741e299c459023f8348a28576fa0569d5d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:44:45.299 [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/98/53/98535aab24ffb4404ba7324a4c260ec72552f3f6668d739c2cd89607242c3859.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 20:44:45.300 [debug] QUERY OK source="settings" db=0.4ms idle=34.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:45.301 [debug] QUERY OK source="settings" db=0.3ms idle=34.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:45.301 [debug] Running yt-dlp command for action: get_downloadable_status 20:44:45.303 [debug] QUERY OK source="settings" db=0.3ms idle=34.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:45.304 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:44:45.304 [debug] QUERY OK source="settings" db=0.4ms idle=33.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:44:45.304 [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/f0/01f0a9eef31a53c272e07cee8c06ca80c4c89486519456d19bdf69c330d1a20d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:44:50.447 [info] {"source":"oban","duration":24773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:44:50.930 [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/d7/a1/d7a1cf2f736f24ec5f6d843aec95d0741e299c459023f8348a28576fa0569d5d.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 20:44:50.930 [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" 20:44:50.930 [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" 20:44:50.931 [info] {"args":{"id":8418},"id":226906,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11049761,"event":"job:stop","queue_time":11879175,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:44:50.958 [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/f0/01f0a9eef31a53c272e07cee8c06ca80c4c89486519456d19bdf69c330d1a20d.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 20:44:50.958 [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" 20:44:50.959 [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" 20:44:50.960 [info] {"args":{"id":8401},"id":226905,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11445810,"event":"job:stop","queue_time":11511161,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:45:00.068 [info] {"source":"oban","duration":392,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:45:00.454 [info] {"args":{"id":11},"id":226884,"meta":{},"system_time":1768038300454206006,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:45:00.456 [debug] QUERY OK source="sources" db=1.0ms idle=1999.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] 20:45:00.457 [debug] QUERY OK source="settings" db=0.6ms idle=387.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:45:00.458 [debug] QUERY OK source="media_profiles" db=0.7ms idle=11.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] 20:45:00.458 [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 [] 20:45:00.459 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 20:45:00.459 [debug] QUERY OK source="settings" db=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 [] 20:45:00.460 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:45:00.937 [debug] QUERY OK source="media_items" db=4.5ms idle=477.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, "VSW2XDMy1n4", "IAT_Zf2PCL4", "-xT57w8ZS8U", "EdS_OqCQSew", "FwEJK_d8y8c", "X07XF175FSA", "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", ...] 20:45:00.950 [debug] QUERY OK source="media_items" db=10.1ms idle=483.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] 20:45:00.957 [debug] QUERY OK source="tasks" db=0.9ms idle=18.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226908, 11, ~U[2026-01-10 09:45:00Z], ~U[2026-01-10 09:45:00Z]] 20:45:00.959 [info] {"args":{"id":11},"id":226884,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":503272,"event":"job:stop","queue_time":293288,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:45:02.690 [info] GET / 20:45:02.690 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:45:02.692 [debug] QUERY OK source="settings" db=1.0ms queue=0.2ms idle=237.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:45:02.693 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=237.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:45:02.694 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=238.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:45:02.722 [debug] QUERY OK source="media_items" db=27.4ms queue=0.1ms idle=239.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:45:02.727 [debug] QUERY OK source="media_items" db=3.4ms queue=0.2ms idle=267.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:45:02.728 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=35.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:45:02.728 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=34.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:45:02.730 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=35.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:45:02.736 [debug] QUERY OK source="media_items" db=3.5ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:45:02.737 [debug] QUERY OK source="media_items" db=0.7ms idle=9.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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:45:02.738 [debug] QUERY OK source="sources" db=0.6ms idle=9.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 (?,?,?)) [12, 15, 6] 20:45:02.777 [debug] QUERY OK source="media_items" db=36.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:45:02.779 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=47.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:45:02.782 [debug] QUERY OK source="sources" db=0.6ms queue=0.2ms idle=44.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" IN (?,?)) [27, 5] 20:45:02.788 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=50.5ms 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"] 20:45:02.790 [info] Sent 200 in 100ms 20:45:18.510 [info] {"args":{"id":25},"id":226885,"meta":{},"system_time":1768038318510106834,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:45:18.511 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=55.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] 20:45:18.512 [debug] QUERY OK source="settings" db=0.6ms idle=56.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:45:18.519 [debug] QUERY OK source="media_profiles" db=6.4ms idle=57.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] 20:45:18.526 [debug] QUERY OK source="settings" db=6.5ms idle=16.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:45:18.526 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 20:45:18.526 [debug] QUERY OK source="settings" db=0.5ms idle=16.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:45:18.527 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:45:18.840 [debug] QUERY OK source="media_items" db=2.3ms idle=326.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 20:45:18.842 [debug] QUERY OK source="media_items" db=1.1ms idle=329.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] 20:45:18.846 [debug] QUERY OK source="tasks" db=0.6ms idle=318.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226909, 25, ~U[2026-01-10 09:45:18Z], ~U[2026-01-10 09:45:18Z]] 20:45:18.847 [info] {"args":{"id":25},"id":226885,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":336357,"event":"job:stop","queue_time":471851,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:45:20.475 [info] {"source":"oban","duration":25845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:45:37.569 [info] {"args":{"id":2},"id":226886,"meta":{},"system_time":1768038337568725303,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:45:37.570 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1114.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" = ?) [2] 20:45:37.571 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1115.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:45:37.572 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms 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] 20:45:37.573 [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 [] 20:45:37.573 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 20:45:37.574 [debug] QUERY OK source="settings" db=0.1ms 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 [] 20:45:37.574 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:45:38.174 [debug] QUERY OK source="media_items" db=3.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."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "Usk1j8IT7ww", "eIpWmOMdYMA", "M08XtzkUg2A", "XC32_9oNoeQ", "gVqE98_flmc", "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", ...] 20:45:38.186 [debug] QUERY OK source="media_items" db=7.0ms idle=607.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] 20:45:38.189 [debug] QUERY OK source="tasks" db=0.6ms idle=614.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226910, 2, ~U[2026-01-10 09:45:38Z], ~U[2026-01-10 09:45:38Z]] 20:45:38.190 [info] {"args":{"id":2},"id":226886,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":621098,"event":"job:stop","queue_time":189132,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:45:50.498 [info] {"source":"oban","duration":22550,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:46:00.069 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:46:12.402 [info] GET /sources/12 20:46:12.402 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "12"} Pipelines: [:browser] 20:46:12.403 [debug] QUERY OK source="sources" db=0.8ms idle=947.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" = ?) [12] 20:46:12.404 [debug] QUERY OK source="media_profiles" db=0.8ms idle=948.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] 20:46:12.406 [debug] QUERY OK source="tasks" db=1.3ms queue=0.1ms idle=949.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 (?,?,?,?)) [12, "executing", "available", "scheduled", "retryable"] 20:46:12.407 [debug] QUERY OK source="oban_jobs" db=0.5ms queue=0.1ms idle=951.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" = ?) [224971] 20:46:12.409 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=759.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:46:12.410 [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 [] 20:46:12.411 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:46:12.416 [debug] QUERY OK source="sources" db=0.8ms idle=8.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] 20:46:12.428 [debug] QUERY OK source="media_items" db=10.9ms idle=9.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")))) [12] 20:46:12.439 [debug] QUERY OK source="media_items" db=10.9ms idle=19.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 ? [12, 10, 0] 20:46:12.441 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [12] 20:46:12.443 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=30.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [12] 20:46:12.452 [debug] QUERY OK source="media_items" db=9.0ms queue=0.1ms idle=27.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 ? [12, 10, 0] 20:46:12.456 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=27.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] 20:46:12.461 [debug] QUERY OK source="media_items" db=3.9ms idle=17.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"))))) [12] 20:46:12.473 [debug] QUERY OK source="media_items" db=11.7ms idle=19.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 ? [12, 10, 0] 20:46:12.477 [info] Sent 200 in 75ms 20:46:12.902 [info] GET /sources/24 20:46:12.902 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "24"} Pipelines: [:browser] 20:46:12.904 [debug] QUERY OK source="sources" db=1.0ms idle=450.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] 20:46:12.905 [debug] QUERY OK source="media_profiles" db=0.7ms idle=448.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] 20:46:12.916 [debug] QUERY OK source="tasks" db=10.6ms idle=444.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 (?,?,?,?)) [24, "executing", "available", "scheduled", "retryable"] 20:46:12.917 [debug] QUERY OK source="oban_jobs" db=0.3ms queue=0.1ms idle=443.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 (?,?)) [226897, 202152] 20:46:12.917 [debug] QUERY OK source="settings" db=0.2ms idle=265.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:46:12.918 [debug] QUERY OK source="settings" db=0.7ms 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 [] 20:46:12.920 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms 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 [] 20:46:12.925 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=8.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] 20:46:12.927 [debug] QUERY OK source="media_items" db=0.7ms 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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:46:12.929 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=10.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] 20:46:12.929 [debug] QUERY OK source="sources" db=0.2ms 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] 20:46:12.930 [debug] QUERY OK source="media_items" db=0.5ms idle=9.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [24] 20:46:12.932 [debug] QUERY OK source="media_items" db=1.3ms idle=5.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 ? [24, 10, 0] 20:46:12.934 [debug] QUERY OK source="sources" db=0.5ms 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] 20:46:12.935 [debug] QUERY OK source="media_items" db=0.9ms idle=5.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"))))) [24] 20:46:12.938 [debug] QUERY OK source="media_items" db=2.4ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:46:12.940 [info] Sent 200 in 38ms 20:46:20.511 [info] {"source":"oban","duration":10780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:46:36.645 [info] GET /sources/7/edit 20:46:36.645 [info] GET /sources/15 20:46:36.645 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 20:46:36.645 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "15"} Pipelines: [:browser] 20:46:36.648 [debug] QUERY OK source="sources" db=2.1ms idle=190.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] 20:46:36.648 [debug] QUERY OK source="sources" db=2.6ms idle=927.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] 20:46:36.649 [debug] QUERY OK source="media_profiles" db=1.1ms idle=193.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] 20:46:36.650 [debug] QUERY OK source="media_profiles" db=0.9ms idle=193.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" [] 20:46:36.652 [debug] QUERY OK source="settings" db=1.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 [] 20:46:36.653 [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 [] 20:46:36.654 [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 [] 20:46:36.663 [info] Sent 200 in 17ms 20:46:36.673 [debug] QUERY OK source="tasks" db=22.8ms queue=0.1ms idle=194.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 (?,?,?,?)) [15, "executing", "available", "scheduled", "retryable"] 20:46:36.674 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=23.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 (?,?)) [226890, 202175] 20:46:36.675 [debug] QUERY OK source="settings" db=0.5ms idle=23.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:46:36.676 [debug] QUERY OK source="settings" db=0.3ms idle=22.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:46:36.677 [debug] QUERY OK source="settings" db=0.3ms idle=22.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:46:36.681 [debug] QUERY OK source="sources" db=0.5ms idle=6.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] 20:46:36.689 [debug] QUERY OK source="media_items" db=7.5ms 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")))) [15] 20:46:36.698 [debug] QUERY OK source="media_items" db=8.4ms 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 (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:46:36.699 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=22.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] 20:46:36.700 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=22.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [15] 20:46:36.707 [debug] QUERY OK source="media_items" db=5.8ms queue=0.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 ? [15, 10, 0] 20:46:36.710 [debug] QUERY OK source="sources" db=0.6ms idle=20.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] 20:46:36.714 [debug] QUERY OK source="media_items" db=2.7ms idle=13.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"))))) [15] 20:46:36.724 [debug] QUERY OK source="media_items" db=9.4ms queue=0.1ms idle=15.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] 20:46:36.727 [info] Sent 200 in 82ms 20:46:42.753 [info] {"args":{"id":1},"id":226887,"meta":{},"system_time":1768038402753358489,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:46:42.755 [debug] QUERY OK source="sources" db=2.1ms idle=298.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] 20:46:42.759 [debug] QUERY OK source="settings" db=3.2ms 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 [] 20:46:42.763 [debug] QUERY OK source="media_profiles" db=3.3ms 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] 20:46:42.765 [debug] QUERY OK source="settings" db=2.2ms queue=0.1ms idle=18.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:46:42.765 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 20:46:42.766 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:46:42.766 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:46:43.100 [debug] QUERY OK source="media_items" db=5.0ms queue=0.1ms 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 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "W4asNKhu7Nk", "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", ...] 20:46:43.110 [debug] QUERY OK source="media_items" db=5.8ms idle=345.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] 20:46:43.116 [debug] QUERY OK source="tasks" db=1.0ms idle=348.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226911, 1, ~U[2026-01-10 09:46:43Z], ~U[2026-01-10 09:46:43Z]] 20:46:43.117 [info] {"args":{"id":1},"id":226887,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":362795,"event":"job:stop","queue_time":418933,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:46:50.523 [info] {"source":"oban","duration":10992,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:46:51.785 [info] {"args":{"id":19},"id":226888,"meta":{},"system_time":1768038411784946105,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:46:51.786 [debug] QUERY OK source="sources" db=0.4ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 20:46:51.787 [debug] QUERY OK source="settings" db=0.5ms idle=1263.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:46:51.787 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1012.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] 20:46:51.788 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:46:51.788 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 20:46:51.789 [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 [] 20:46:51.789 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:46:52.139 [debug] QUERY OK source="media_items" db=2.2ms idle=350.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"] 20:46:52.143 [debug] QUERY OK source="media_items" db=0.9ms 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")))) [19] 20:46:52.147 [debug] QUERY OK source="tasks" db=0.5ms idle=357.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226912, 19, ~U[2026-01-10 09:46:52Z], ~U[2026-01-10 09:46:52Z]] 20:46:52.148 [info] {"args":{"id":19},"id":226888,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":362415,"event":"job:stop","queue_time":405112,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:46:54.446 [info] GET /sources/5/edit 20:46:54.446 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 20:46:54.447 [info] GET /sources/6/edit 20:46:54.447 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 20:46:54.448 [debug] QUERY OK source="sources" db=0.7ms idle=991.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] 20:46:54.448 [debug] QUERY OK source="sources" db=0.4ms idle=992.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] 20:46:54.449 [debug] QUERY OK source="media_profiles" db=1.3ms queue=0.1ms idle=992.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" [] 20:46:54.450 [debug] QUERY OK source="media_profiles" db=1.6ms queue=0.1ms idle=992.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" [] 20:46:54.450 [debug] QUERY OK source="settings" db=0.4ms idle=665.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:46:54.451 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:46:54.451 [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 [] 20:46:54.452 [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 [] 20:46:54.453 [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 [] 20:46:54.453 [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 [] 20:46:54.456 [info] Sent 200 in 8ms 20:46:54.456 [info] Sent 200 in 9ms 20:47:00.071 [info] {"source":"oban","duration":648,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:47:15.065 [info] GET / 20:47:15.065 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:47:15.066 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:47:15.067 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1611.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:47:15.067 [debug] QUERY OK source="sources" db=0.2ms idle=1611.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:47:15.128 [debug] QUERY OK source="media_items" db=60.5ms queue=0.1ms idle=1222.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:47:15.131 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=279.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:47:15.132 [debug] QUERY OK source="settings" db=0.4ms idle=65.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:47:15.133 [debug] QUERY OK source="settings" db=0.2ms idle=65.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:47:15.133 [debug] QUERY OK source="settings" db=0.2ms idle=66.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:47:15.138 [debug] QUERY OK source="media_items" db=3.4ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:47:15.139 [debug] QUERY OK source="media_items" db=0.7ms 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] 20:47:15.140 [debug] QUERY OK source="sources" db=0.6ms idle=7.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 (?,?,?)) [12, 15, 6] 20:47:15.202 [debug] QUERY OK source="media_items" db=59.1ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:47:15.204 [debug] QUERY OK source="media_items" db=1.8ms idle=69.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] 20:47:15.205 [debug] QUERY OK source="sources" db=0.4ms idle=67.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] 20:47:15.209 [debug] QUERY OK source="tasks" db=0.5ms idle=69.2ms 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"] 20:47:15.210 [info] Sent 200 in 145ms 20:47:18.944 [info] GET /sources/1/edit 20:47:18.944 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 20:47:18.944 [info] GET /sources/16/edit 20:47:18.945 [debug] QUERY OK source="sources" db=0.5ms idle=489.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] 20:47:18.945 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "16"} Pipelines: [:browser] 20:47:18.946 [debug] QUERY OK source="media_profiles" db=0.9ms idle=490.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" [] 20:47:18.946 [debug] QUERY OK source="sources" db=0.8ms idle=490.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] 20:47:18.947 [debug] QUERY OK source="media_profiles" db=0.8ms idle=491.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" [] 20:47:18.948 [debug] QUERY OK source="settings" db=1.1ms idle=90.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:47:18.949 [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 [] 20:47:18.949 [debug] QUERY OK source="settings" db=1.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 [] 20:47:18.950 [debug] QUERY OK source="settings" db=0.5ms queue=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 [] 20:47:18.951 [debug] QUERY OK source="settings" db=1.3ms 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 [] 20:47:18.956 [debug] QUERY OK source="settings" db=4.0ms 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 [] 20:47:18.957 [info] Sent 200 in 13ms 20:47:18.965 [info] Sent 200 in 21ms 20:47:20.530 [info] {"source":"oban","duration":6403,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:47:43.948 [info] {"args":{"id":26},"id":226889,"meta":{},"system_time":1768038463948201961,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:47:43.952 [debug] QUERY OK source="sources" db=3.9ms idle=1493.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] 20:47:43.953 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1497.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:47:43.954 [debug] QUERY OK source="media_profiles" db=1.2ms idle=1023.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] 20:47:43.955 [debug] QUERY OK source="settings" db=0.7ms idle=20.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:47:43.956 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 20:47:43.956 [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 [] 20:47:43.956 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:47:44.302 [debug] QUERY OK source="media_items" db=5.8ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "UO8_-B-383w", "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", ...] 20:47:44.313 [debug] QUERY OK source="media_items" db=8.7ms idle=351.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] 20:47:44.317 [debug] QUERY OK source="tasks" db=0.8ms idle=359.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226913, 26, ~U[2026-01-10 09:47:44Z], ~U[2026-01-10 09:47:44Z]] 20:47:44.318 [info] {"args":{"id":26},"id":226889,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":369259,"event":"job:stop","queue_time":299026,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:47:50.553 [info] {"source":"oban","duration":22628,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:47:55.974 [info] {"args":{"id":15},"id":226890,"meta":{},"system_time":1768038475974201823,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:47:55.975 [debug] QUERY OK source="sources" db=0.8ms idle=519.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] 20:47:55.976 [debug] QUERY OK source="settings" db=0.7ms idle=520.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:47:55.977 [debug] QUERY OK source="media_profiles" db=0.6ms idle=521.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] 20:47:55.980 [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 [] 20:47:55.980 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 20:47:55.981 [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 [] 20:47:55.981 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:47:56.447 [debug] QUERY OK source="media_items" db=2.7ms idle=469.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, "OCnm1p7J38Q", "javP2Zg24jM", "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", ...] 20:47:56.453 [debug] QUERY OK source="media_items" db=3.7ms idle=473.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] 20:47:56.458 [debug] QUERY OK source="tasks" db=1.1ms idle=476.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226914, 15, ~U[2026-01-10 09:47:56Z], ~U[2026-01-10 09:47:56Z]] 20:47:56.459 [info] {"args":{"id":15},"id":226890,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":484631,"event":"job:stop","queue_time":303935,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:47:59.657 [info] GET /sources/27/edit 20:47:59.657 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "27"} Pipelines: [:browser] 20:47:59.658 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1202.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] 20:47:59.659 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=1203.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" [] 20:47:59.661 [debug] QUERY OK source="settings" db=0.4ms idle=1204.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:47:59.661 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=682.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:47:59.662 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:47:59.665 [info] Sent 200 in 8ms 20:47:59.666 [info] GET /sources/12/edit 20:47:59.666 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "12"} Pipelines: [:browser] 20:47:59.667 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [12] 20:47:59.668 [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" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 20:47:59.669 [debug] QUERY OK source="settings" db=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 [] 20:47:59.669 [debug] QUERY OK source="settings" db=0.1ms 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 [] 20:47:59.670 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:47:59.673 [info] Sent 200 in 6ms 20:48:00.072 [info] {"source":"oban","duration":469,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:48:14.699 [info] GET /sources/24/edit 20:48:14.699 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "24"} Pipelines: [:browser] 20:48:14.699 [info] GET /sources/15/edit 20:48:14.700 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "15"} Pipelines: [:browser] 20:48:14.701 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=1245.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] 20:48:14.702 [debug] QUERY OK source="sources" db=0.7ms idle=1246.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] 20:48:14.702 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1246.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" [] 20:48:14.703 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=685.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" [] 20:48:14.703 [debug] QUERY OK source="settings" db=0.4ms idle=247.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:14.704 [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 [] 20:48:14.704 [debug] QUERY OK source="settings" db=0.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 [] 20:48:14.705 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:48:14.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 [] 20:48:14.706 [debug] QUERY OK source="settings" db=0.2ms queue=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 [] 20:48:14.713 [info] Sent 200 in 13ms 20:48:14.713 [info] Sent 200 in 13ms 20:48:18.127 [info] GET / 20:48:18.127 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:48:18.128 [debug] QUERY OK source="settings" db=0.3ms idle=1672.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:18.128 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1673.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:48:18.129 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=1673.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:48:18.157 [debug] QUERY OK source="media_items" db=27.7ms queue=0.1ms idle=1106.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:48:18.161 [debug] QUERY OK source="media_items" db=2.9ms queue=0.1ms idle=132.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:48:18.162 [debug] QUERY OK source="settings" db=0.3ms idle=33.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:18.162 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=33.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:18.163 [debug] QUERY OK source="settings" db=0.3ms idle=33.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:18.168 [debug] QUERY OK source="media_items" db=3.1ms 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 (NOT (m0."media_filepath" IS NULL)) [] 20:48:18.169 [debug] QUERY OK source="media_items" db=0.5ms idle=7.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)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:48:18.170 [debug] QUERY OK source="sources" db=0.3ms 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 (?,?,?)) [12, 15, 6] 20:48:18.206 [debug] QUERY OK source="media_items" db=33.1ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:48:18.208 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=42.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] 20:48:18.210 [debug] QUERY OK source="sources" db=0.5ms idle=41.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] 20:48:18.215 [debug] QUERY OK source="tasks" db=0.3ms idle=45.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"] 20:48:18.217 [info] Sent 200 in 89ms 20:48:20.039 [info] {"args":{"id":3},"id":226891,"meta":{},"system_time":1768038500039158685,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:48:20.044 [debug] QUERY OK source="sources" db=4.3ms idle=584.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] 20:48:20.045 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=589.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:20.047 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=590.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] 20:48:20.048 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:48:20.048 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 20:48:20.049 [debug] QUERY OK source="settings" db=0.2ms queue=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 [] 20:48:20.050 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:48:20.475 [debug] QUERY OK source="media_items" db=3.1ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "rzQeUM-lMUY", "BkUHm95UvCw", "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", ...] 20:48:20.483 [debug] QUERY OK source="media_items" db=3.1ms idle=434.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] 20:48:20.486 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=436.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226915, 3, ~U[2026-01-10 09:48:20Z], ~U[2026-01-10 09:48:20Z]] 20:48:20.487 [info] {"args":{"id":3},"id":226891,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":447923,"event":"job:stop","queue_time":299804,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:48:20.565 [info] {"source":"oban","duration":10959,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:48:42.842 [info] GET /media_profiles/1 20:48:42.842 [info] GET /sources/opml.xml 20:48:42.842 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.opml_feed/2 Parameters: %{"route_token" => "8ce88d66-3e61-447a-a5f3-d1b1865157bf"} Pipelines: [:maybe_basic_auth, :token_protected_route] 20:48:42.842 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 20:48:42.843 [debug] QUERY OK source="media_profiles" db=0.9ms idle=387.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 WHERE (m0."id" = ?) [1] 20:48:42.843 [debug] QUERY OK source="settings" db=1.2ms 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 [] 20:48:42.845 [debug] QUERY OK source="sources" db=1.2ms idle=388.7ms SELECT s0."custom_name", s0."uuid" FROM "sources" AS s0 WHERE (s0."marked_for_deletion_at" IS NULL) ORDER BY s0."custom_name" [] 20:48:42.845 [info] Sent 200 in 3ms 20:48:42.846 [debug] QUERY OK source="sources" db=2.4ms queue=0.1ms idle=388.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] 20:48:42.848 [debug] QUERY OK source="settings" db=0.8ms 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 [] 20:48:42.849 [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 [] 20:48:42.850 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:48:42.853 [info] Sent 200 in 10ms 20:48:47.077 [info] GET /sources/3/edit 20:48:47.078 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 20:48:47.079 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=969.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] 20:48:47.080 [debug] QUERY OK source="media_profiles" db=0.5ms idle=624.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" [] 20:48:47.081 [debug] QUERY OK source="settings" db=0.5ms idle=625.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:47.082 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:48:47.083 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:48:47.087 [info] Sent 200 in 9ms 20:48:47.098 [info] GET /sources/new 20:48:47.098 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 20:48:47.099 [debug] QUERY OK source="media_profiles" db=0.6ms idle=19.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" [] 20:48:47.100 [debug] QUERY OK source="settings" db=0.5ms idle=19.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:47.101 [debug] QUERY OK source="settings" db=0.4ms idle=19.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:47.101 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:48:47.102 [debug] QUERY OK source="settings" db=0.2ms idle=19.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:48:47.104 [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 [] 20:48:47.108 [info] Sent 200 in 9ms 20:48:50.587 [info] {"source":"oban","duration":21422,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:49:00.074 [info] {"source":"oban","duration":322,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:49:09.182 [info] {"args":{"id":22},"id":226892,"meta":{},"system_time":1768038549182105827,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:49:09.183 [debug] QUERY OK source="sources" db=0.3ms idle=727.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" = ?) [22] 20:49:09.183 [debug] QUERY OK source="settings" db=0.3ms idle=727.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:09.184 [debug] QUERY OK source="media_profiles" db=0.6ms idle=728.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] 20:49:09.185 [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 [] 20:49:09.185 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 20:49:09.186 [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 [] 20:49:09.186 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:49:09.511 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=327.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"] 20:49:09.516 [debug] QUERY OK source="settings" db=2.0ms queue=0.1ms idle=329.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:09.516 [debug] QUERY OK source="settings" db=0.4ms idle=331.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:09.517 [debug] Running yt-dlp command for action: get_media_attributes 20:49:09.518 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:49:09.518 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:49:09.519 [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 [] 20:49:09.519 [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/93/8f/938f87851a7104ab348ae89b655e1784ccad01b1ec13ec878840ff2c319d6a49.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:49:11.188 [info] {"args":{"id":18},"id":226893,"meta":{},"system_time":1768038551188479982,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:49:11.189 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1670.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] 20:49:11.190 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1670.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:11.191 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=1013.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] 20:49:11.192 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:49:11.192 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 20:49:11.193 [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 [] 20:49:11.193 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:49:11.634 [debug] QUERY OK source="media_items" db=5.0ms queue=0.1ms idle=439.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "XCGRhxHrjWg", "fyWYr4PukJY", "-w4HeclDfgE", "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", ...] 20:49:11.644 [debug] QUERY OK source="media_items" db=6.3ms idle=447.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] 20:49:11.649 [debug] QUERY OK source="tasks" db=0.8ms idle=455.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226916, 18, ~U[2026-01-10 09:49:11Z], ~U[2026-01-10 09:49:11Z]] 20:49:11.651 [info] {"args":{"id":18},"id":226893,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":461281,"event":"job:stop","queue_time":341371,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:49:12.156 [info] GET /sources/16 20:49:12.156 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "16"} Pipelines: [:browser] 20:49:12.158 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=509.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] 20:49:12.159 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=510.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] 20:49:12.170 [info] GET /sources/6 20:49:12.170 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 20:49:12.171 [debug] QUERY OK source="sources" db=0.4ms queue=0.2ms idle=519.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] 20:49:12.172 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=512.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] 20:49:12.458 [debug] QUERY OK source="tasks" db=285.1ms queue=0.1ms idle=14.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 (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 20:49:12.461 [debug] QUERY OK source="oban_jobs" db=1.5ms queue=0.4ms idle=287.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 (?,?)) [226896, 202170] 20:49:12.463 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=289.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:12.464 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:49:12.568 [debug] QUERY OK source="settings" db=0.9ms idle=109.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:12.573 [debug] QUERY OK source="sources" db=0.4ms idle=110.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] 20:49:12.576 [debug] QUERY OK source="media_items" db=2.4ms idle=110.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")))) [6] 20:49:12.580 [debug] QUERY OK source="media_items" db=4.0ms queue=0.1ms idle=112.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 ? [6, 10, 0] 20:49:12.582 [debug] QUERY OK source="sources" db=0.7ms idle=13.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" = ?) [6] 20:49:12.583 [debug] QUERY OK source="media_items" db=0.3ms idle=10.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 20:49:12.584 [debug] QUERY OK source="media_items" db=0.5ms 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 ? [6, 10, 0] 20:49:12.586 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [6] 20:49:12.590 [debug] QUERY OK source="media_items" db=3.3ms 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"))))) [6] 20:49:12.594 [debug] QUERY OK source="media_items" db=4.0ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:49:12.596 [info] Sent 200 in 426ms 20:49:12.635 [debug] QUERY OK source="tasks" db=475.3ms queue=0.1ms idle=510.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 (?,?,?,?)) [16, "executing", "available", "scheduled", "retryable"] 20:49:12.637 [debug] QUERY OK source="oban_jobs" db=1.2ms idle=51.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 (?,?)) [226900, 202179] 20:49:12.638 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=52.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:12.639 [debug] QUERY OK source="settings" db=0.2ms idle=49.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:12.640 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:49:12.643 [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] 20:49:12.645 [debug] QUERY OK source="media_items" db=1.9ms 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")))) [16] 20:49:12.648 [debug] QUERY OK source="media_items" db=2.4ms 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 (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:49:12.649 [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" = ?) [16] 20:49:12.649 [debug] QUERY OK source="media_items" db=0.1ms idle=9.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [16] 20:49:12.651 [debug] QUERY OK source="media_items" db=1.3ms idle=6.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 ? [16, 10, 0] 20:49:12.652 [debug] QUERY OK source="sources" db=0.3ms idle=6.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] 20:49:12.653 [debug] QUERY OK source="media_items" db=0.4ms idle=4.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] 20:49:12.654 [debug] QUERY OK source="media_items" db=1.5ms idle=4.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] 20:49:12.659 [info] Sent 200 in 503ms 20:49:13.673 [info] GET /sources/7 20:49:13.673 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 20:49:13.675 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=1023.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] 20:49:13.676 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=1023.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] 20:49:13.687 [debug] QUERY OK source="tasks" db=10.5ms idle=1023.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"] 20:49:13.689 [debug] QUERY OK source="oban_jobs" db=0.3ms queue=0.2ms idle=1033.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 (?,?)) [226907, 202154] 20:49:13.690 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=505.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:13.691 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms 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 [] 20:49:13.692 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=16.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:13.697 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=9.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" = ?) [7] 20:49:13.702 [debug] QUERY OK source="media_items" db=4.0ms idle=9.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")))) [7] 20:49:13.712 [debug] QUERY OK source="media_items" db=8.9ms queue=0.2ms idle=13.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 ? [7, 10, 0] 20:49:13.715 [debug] QUERY OK source="sources" db=0.8ms 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] 20:49:13.717 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=23.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 20:49:13.726 [debug] QUERY OK source="media_items" db=7.9ms queue=0.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 ? [7, 10, 0] 20:49:13.729 [debug] QUERY OK source="sources" db=0.6ms idle=25.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] 20:49:13.731 [debug] QUERY OK source="media_items" db=2.1ms idle=17.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"))))) [7] 20:49:13.740 [debug] QUERY OK source="media_items" db=8.5ms idle=16.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] 20:49:13.743 [info] Sent 200 in 70ms 20:49:14.272 [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/93/8f/938f87851a7104ab348ae89b655e1784ccad01b1ec13ec878840ff2c319d6a49.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 20:49:14.272 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 20:49:14.273 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=546.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] 20:49:14.278 [debug] QUERY OK source="tasks" db=1.3ms queue=0.2ms idle=536.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226917, 22, ~U[2026-01-10 09:49:14Z], ~U[2026-01-10 09:49:14Z]] 20:49:14.279 [info] {"args":{"id":22},"id":226892,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5096832,"event":"job:stop","queue_time":540518,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:49:18.369 [info] GET / 20:49:18.369 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:49:18.370 [debug] QUERY OK source="settings" db=0.7ms idle=914.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:18.371 [debug] QUERY OK source="media_profiles" db=0.3ms idle=915.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:49:18.371 [debug] QUERY OK source="sources" db=0.1ms idle=916.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:49:18.432 [debug] QUERY OK source="media_items" db=60.9ms idle=916.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:49:18.440 [debug] QUERY OK source="media_items" db=7.5ms queue=0.1ms idle=233.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:49:18.441 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms 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 [] 20:49:18.442 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=70.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:18.443 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=71.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:49:18.450 [debug] QUERY OK source="media_items" db=4.7ms idle=12.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)) [] 20:49:18.451 [debug] QUERY OK source="media_items" db=0.8ms queue=0.2ms idle=10.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] 20:49:18.453 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=11.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 (?,?,?)) [12, 15, 6] 20:49:18.495 [debug] QUERY OK source="media_items" db=35.6ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:49:18.497 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=52.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] 20:49:18.499 [debug] QUERY OK source="sources" db=0.3ms idle=48.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] 20:49:18.503 [debug] QUERY OK source="tasks" db=0.3ms idle=51.6ms 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"] 20:49:18.505 [info] Sent 200 in 136ms 20:49:20.609 [info] {"source":"oban","duration":21461,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:49:50.636 [info] {"source":"oban","duration":26487,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:50:00.075 [info] {"source":"oban","duration":597,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:50:08.345 [info] {"args":{"id":23},"id":226894,"meta":{},"system_time":1768038608345063255,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:50:08.345 [debug] QUERY OK source="sources" db=0.4ms idle=1889.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" = ?) [23] 20:50:08.347 [debug] QUERY OK source="settings" db=1.3ms 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 [] 20:50:08.349 [debug] QUERY OK source="media_profiles" db=1.8ms idle=892.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] 20:50:08.357 [debug] QUERY OK source="settings" db=7.5ms idle=14.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:50:08.357 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 20:50:08.358 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:50:08.358 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:50:08.684 [debug] QUERY OK source="media_items" db=3.8ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [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"] 20:50:08.687 [debug] QUERY OK source="media_items" db=1.3ms idle=338.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] 20:50:08.692 [debug] QUERY OK source="tasks" db=0.9ms idle=332.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226918, 23, ~U[2026-01-10 09:50:08Z], ~U[2026-01-10 09:50:08Z]] 20:50:08.693 [info] {"args":{"id":23},"id":226894,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":347121,"event":"job:stop","queue_time":413449,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:50:18.654 [info] GET / 20:50:18.654 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:50:18.655 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=295.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:50:18.655 [debug] QUERY OK source="media_profiles" db=0.1ms idle=200.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:50:18.656 [debug] QUERY OK source="sources" db=0.2ms idle=200.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:50:18.715 [debug] QUERY OK source="media_items" db=59.4ms idle=200.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:50:18.725 [debug] QUERY OK source="media_items" db=8.9ms queue=0.1ms idle=260.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:50:18.726 [debug] QUERY OK source="settings" db=0.5ms idle=70.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:50:18.726 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:50:18.727 [debug] QUERY OK source="settings" db=0.3ms idle=71.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:50:18.736 [debug] QUERY OK source="media_items" db=8.5ms idle=12.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 (NOT (m0."media_filepath" IS NULL)) [] 20:50:18.738 [debug] QUERY OK source="media_items" db=1.3ms idle=12.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] 20:50:18.740 [debug] QUERY OK source="sources" db=0.7ms idle=13.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 (?,?,?)) [12, 15, 6] 20:50:18.777 [debug] QUERY OK source="media_items" db=34.5ms idle=16.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"))) [] 20:50:18.779 [debug] QUERY OK source="media_items" db=1.6ms idle=50.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:50:18.780 [debug] QUERY OK source="sources" db=0.2ms idle=43.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] 20:50:18.783 [debug] QUERY OK source="tasks" db=0.5ms idle=44.2ms 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"] 20:50:18.785 [info] Sent 200 in 131ms 20:50:20.646 [info] {"source":"oban","duration":8807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:50:50.654 [info] {"source":"oban","duration":6882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:51:00.077 [info] {"source":"oban","duration":358,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:51:06.523 [info] {"args":{"id":10},"id":226895,"meta":{},"system_time":1768038666522864098,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:51:06.531 [debug] QUERY OK source="sources" db=7.4ms queue=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 20:51:06.533 [debug] QUERY OK source="settings" db=1.3ms queue=0.1ms idle=75.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:06.534 [debug] QUERY OK source="media_profiles" db=0.7ms 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] 20:51:06.540 [debug] QUERY OK source="settings" db=5.9ms queue=0.1ms idle=19.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:06.540 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 20:51:06.541 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=18.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:06.542 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:51:06.919 [debug] QUERY OK source="media_items" db=3.9ms 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, "g0z7tR6KdIE", "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", ...] 20:51:06.923 [debug] QUERY OK source="settings" db=0.3ms idle=389.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:06.924 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=389.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:06.924 [debug] Running yt-dlp command for action: get_media_attributes 20:51:06.926 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:51:06.926 [debug] QUERY OK source="settings" db=0.2ms idle=384.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:06.927 [debug] QUERY OK source="settings" db=0.2ms 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 [] 20:51:06.928 [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/72/06/720605dd789b2f559fc2e7e6f71a688ecb23def3412cad04bbe749147e5ce027.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:51:08.534 [info] {"args":{"id":6},"id":226896,"meta":{},"system_time":1768038668534589938,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:51:08.536 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=79.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] 20:51:08.537 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=81.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:08.539 [debug] QUERY OK source="media_profiles" db=1.0ms queue=0.1ms idle=82.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] 20:51:08.541 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=14.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:08.541 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 20:51:08.542 [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 [] 20:51:08.542 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:51:08.885 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms idle=345.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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "cIrfWaWIByQ", "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", ...] 20:51:08.892 [debug] QUERY OK source="media_items" db=2.5ms idle=352.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] 20:51:08.896 [debug] QUERY OK source="tasks" db=0.7ms idle=353.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226919, 6, ~U[2026-01-10 09:51:08Z], ~U[2026-01-10 09:51:08Z]] 20:51:08.897 [info] {"args":{"id":6},"id":226896,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":361852,"event":"job:stop","queue_time":346186,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:51:10.540 [info] {"args":{"id":24},"id":226897,"meta":{},"system_time":1768038670540263337,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:51:10.542 [debug] QUERY OK source="sources" db=1.2ms idle=85.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] 20:51:10.544 [debug] QUERY OK source="settings" db=1.1ms queue=0.1ms idle=87.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:10.545 [debug] QUERY OK source="media_profiles" db=0.7ms idle=88.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] 20:51:10.546 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:51:10.546 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 20:51:10.547 [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 [] 20:51:10.547 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 20:51:10.908 [debug] QUERY OK source="media_items" db=4.1ms idle=361.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", ...] 20:51:10.912 [debug] QUERY OK source="media_items" db=2.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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 20:51:10.916 [debug] QUERY OK source="tasks" db=0.8ms idle=368.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226920, 24, ~U[2026-01-10 09:51:10Z], ~U[2026-01-10 09:51:10Z]] 20:51:10.917 [info] {"args":{"id":24},"id":226897,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":376066,"event":"job:stop","queue_time":436522,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:51:11.690 [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/72/06/720605dd789b2f559fc2e7e6f71a688ecb23def3412cad04bbe749147e5ce027.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. 20:51:11.691 [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} 20:51:11.695 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms idle=776.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] 20:51:11.700 [debug] QUERY OK source="tasks" db=0.8ms idle=774.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [226921, 10, ~U[2026-01-10 09:51:11Z], ~U[2026-01-10 09:51:11Z]] 20:51:11.702 [info] {"args":{"id":10},"id":226895,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5177740,"event":"job:stop","queue_time":635305,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 20:51:18.973 [info] GET / 20:51:18.973 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:51:18.974 [debug] QUERY OK source="settings" db=0.3ms idle=1518.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:18.975 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1519.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:51:18.975 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1414.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:51:19.007 [debug] QUERY OK source="media_items" db=31.5ms idle=520.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:51:19.011 [debug] QUERY OK source="media_items" db=3.4ms idle=444.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:51:19.012 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=37.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:19.013 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=37.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:19.014 [debug] QUERY OK source="settings" db=0.3ms idle=38.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:51:19.020 [debug] QUERY OK source="media_items" db=3.4ms idle=9.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 (NOT (m0."media_filepath" IS NULL)) [] 20:51:19.021 [debug] QUERY OK source="media_items" db=0.6ms queue=0.2ms idle=9.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)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 20:51:19.023 [debug] QUERY OK source="sources" db=0.3ms idle=10.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 (?,?,?)) [12, 15, 6] 20:51:19.064 [debug] QUERY OK source="media_items" db=34.7ms queue=0.1ms idle=16.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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:51:19.068 [debug] QUERY OK source="media_items" db=2.3ms queue=0.1ms idle=50.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] 20:51:19.070 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=48.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" IN (?,?)) [27, 5] 20:51:19.076 [debug] QUERY OK source="tasks" db=0.4ms idle=54.1ms 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"] 20:51:19.078 [info] Sent 200 in 105ms 20:51:20.675 [info] {"source":"oban","duration":20431,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:51:50.684 [info] {"source":"oban","duration":7898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:52:00.079 [info] {"source":"oban","duration":557,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:52:19.221 [info] GET / 20:52:19.221 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 20:52:19.222 [debug] QUERY OK source="settings" db=0.5ms idle=1467.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:19.223 [debug] QUERY OK source="media_profiles" db=0.5ms idle=767.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 20:52:19.223 [debug] QUERY OK source="sources" db=0.2ms idle=767.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 20:52:19.235 [debug] QUERY OK source="media_items" db=12.0ms idle=768.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:52:19.243 [debug] QUERY OK source="media_items" db=7.7ms idle=479.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 20:52:19.244 [debug] QUERY OK source="settings" db=0.5ms 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 [] 20:52:19.245 [debug] QUERY OK source="settings" db=0.2ms idle=22.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:19.246 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:52:19.252 [debug] QUERY OK source="media_items" db=3.9ms idle=12.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 (NOT (m0."media_filepath" IS NULL)) [] 20:52:19.253 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=8.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] 20:52:19.254 [debug] QUERY OK source="sources" db=0.8ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [12, 15, 6] 20:52:19.315 [debug] QUERY OK source="media_items" db=58.2ms idle=11.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"))) [] 20:52:19.317 [debug] QUERY OK source="media_items" db=1.5ms idle=69.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] 20:52:19.318 [debug] QUERY OK source="sources" db=0.3ms idle=65.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 (?,?)) [27, 5] 20:52:19.320 [debug] QUERY OK source="tasks" db=0.3ms idle=66.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"] 20:52:19.321 [info] Sent 200 in 100ms 20:52:20.692 [info] {"source":"oban","duration":6909,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:52:22.919 [info] GET /sources/27/force_redownload 20:52:22.919 [info] GET /sources/1/force_redownload 20:52:22.920 [debug] QUERY OK source="settings" db=0.6ms 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 [] 20:52:22.920 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=464.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:22.921 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=465.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:22.922 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:22.922 [debug] QUERY OK source="settings" db=0.8ms idle=465.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:22.922 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:22.922 [error] #PID<0.51423.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 1) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/1/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/1/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51423.0>, params: %{}, path_info: ["sources", "1", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/1/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV3oTTE9uVzIcADHNC"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51423.0>, params: %{}, path_info: ["sources", "1", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], (truncated) 20:52:22.923 [error] #PID<0.51422.0> running PinchflatWeb.Endpoint (connection #PID<0.51420.0>, stream id 1) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/27/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/27/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51420.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39710}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51422.0>, params: %{}, path_info: ["sources", "27", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/27/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV3oTPwd2guAcAD3QB"} ], 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.51420.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39710}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/27/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51420.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39710}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51422.0>, params: %{}, path_info: ["sources", "27", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], (truncated) 20:52:23.321 [info] GET /sources/9/force_redownload 20:52:23.322 [debug] QUERY OK source="settings" db=0.3ms idle=554.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:23.323 [debug] QUERY OK source="settings" db=0.4ms idle=402.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:23.323 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:23.324 [error] #PID<0.51424.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 2) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/9/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/9/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/9/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51424.0>, params: %{}, path_info: ["sources", "9", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/9/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV3pzUdWODH4sADHNi"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/9/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/9/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/9/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 2, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51424.0>, params: %{}, path_info: ["sources", "9", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], (truncated) 20:52:23.814 [info] GET /sources/5/force_redownload 20:52:23.815 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=893.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:23.816 [debug] QUERY OK source="settings" db=0.4ms idle=893.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:23.816 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:23.817 [error] #PID<0.51425.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 3) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/5/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/5/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51425.0>, params: %{}, path_info: ["sources", "5", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/5/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV3roueL-PvF0ADHOC"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/5/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/force_redownload", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 3, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51425.0>, params: %{}, path_info: ["sources", "5", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], (truncated) 20:52:24.316 [info] GET /sources/26/force_index 20:52:24.318 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=994.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:24.319 [debug] QUERY OK source="settings" db=0.3ms 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 [] 20:52:24.319 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:24.321 [error] #PID<0.51426.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 4) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/26/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/26/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/26/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 4, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51426.0>, params: %{}, path_info: ["sources", "26", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/26/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV3tghzff9ysQADHOi"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/26/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 4, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/26/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/26/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 4, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51426.0>, params: %{}, path_info: ["sources", "26", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/26/force_i (truncated) 20:52:24.818 [info] GET /sources/27/force_index 20:52:24.820 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=1003.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:24.821 [debug] QUERY OK source="settings" db=0.5ms idle=1004.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:24.821 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:24.822 [error] #PID<0.51427.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 5) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/27/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/27/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 5, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51427.0>, params: %{}, path_info: ["sources", "27", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/27/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV3vYHoPP5uP0ADHPC"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 5, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/27/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 5, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51427.0>, params: %{}, path_info: ["sources", "27", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/27/force_i (truncated) 20:52:25.319 [info] GET /sources/1/force_index 20:52:25.321 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1002.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:25.322 [debug] QUERY OK source="settings" db=0.4ms idle=1002.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:25.322 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:25.324 [error] #PID<0.51428.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 6) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/1/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/1/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 6, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51428.0>, params: %{}, path_info: ["sources", "1", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/1/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV3xPqPcbiuSAADHPi"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 6, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 6, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51428.0>, params: %{}, path_info: ["sources", "1", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/1/force_index", (truncated) 20:52:25.821 [info] GET /sources/5/force_index 20:52:25.823 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=1001.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:25.824 [debug] QUERY OK source="settings" db=0.5ms idle=1002.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:25.824 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:25.825 [error] #PID<0.51429.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 7) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/5/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/5/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 7, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51429.0>, params: %{}, path_info: ["sources", "5", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/5/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV3zHHHhTEFR0ADHQC"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 7, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/5/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 7, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51429.0>, params: %{}, path_info: ["sources", "5", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/5/force_index", (truncated) 20:52:26.323 [info] GET /sources/9/force_index 20:52:26.325 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=1002.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:26.326 [debug] QUERY OK source="settings" db=0.3ms idle=1003.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:26.326 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:26.327 [error] #PID<0.51430.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 8) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/9/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/9/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/9/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 8, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51430.0>, params: %{}, path_info: ["sources", "9", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/9/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV30-1upELorEADHQi"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/9/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 8, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/9/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/9/force_index", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 8, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51430.0>, params: %{}, path_info: ["sources", "9", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/9/force_index", (truncated) 20:52:26.823 [info] GET /sources/26/force_metadata_refresh 20:52:26.823 [debug] QUERY OK source="settings" db=0.2ms idle=1000.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:26.824 [debug] QUERY OK source="settings" db=0.1ms idle=999.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:26.824 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:26.825 [error] #PID<0.51431.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 9) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/26/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/26/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/26/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 9, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51431.0>, params: %{}, path_info: ["sources", "26", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/26/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV322DBVhe520ADHRC"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/26/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 9, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/26/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/26/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 9, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51431.0>, params: %{}, path_info: ["sources", "26", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, (truncated) 20:52:27.323 [info] GET /sources/27/force_metadata_refresh 20:52:27.324 [debug] QUERY OK source="settings" db=0.3ms idle=999.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:27.325 [debug] QUERY OK source="settings" db=0.3ms idle=998.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:27.325 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:27.325 [error] #PID<0.51432.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 10) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/27/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/27/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 10, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51432.0>, params: %{}, path_info: ["sources", "27", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/27/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV34tbqzmzHfIADHRi"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 10, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/27/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 10, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51432.0>, params: %{}, path_info: ["sources", "27", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev" (truncated) 20:52:27.826 [info] GET /sources/1/force_metadata_refresh 20:52:27.827 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1003.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:27.828 [debug] QUERY OK source="settings" db=0.4ms 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 [] 20:52:27.828 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:27.829 [error] #PID<0.51435.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 11) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/1/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/1/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 11, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51435.0>, params: %{}, path_info: ["sources", "1", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/1/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV36lVM3nWaP8ADHSi"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 11, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 11, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51435.0>, params: %{}, path_info: ["sources", "1", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, (truncated) 20:52:32.825 [info] GET /sources/9/force_metadata_refresh 20:52:32.826 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1370.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:32.827 [debug] QUERY OK source="settings" db=0.6ms idle=1031.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:32.827 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:32.828 [error] #PID<0.51436.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 12) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/9/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/9/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/9/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 12, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51436.0>, params: %{}, path_info: ["sources", "9", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/9/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV4NNHtlFfS_UADHTC"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/9/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 12, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/9/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/9/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 12, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51436.0>, params: %{}, path_info: ["sources", "9", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, (truncated) 20:52:37.829 [info] GET /sources/5/force_metadata_refresh 20:52:37.830 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms 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 [] 20:52:37.831 [debug] QUERY OK source="settings" db=0.7ms idle=1375.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:52:37.831 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 20:52:37.832 [error] #PID<0.51437.0> running PinchflatWeb.Endpoint (connection #PID<0.51421.0>, stream id 13) terminated Server: pinchflat.efe32w.uncld.dev:80 (http) Request: GET /sources/5/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/5/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 13, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51437.0>, params: %{}, path_info: ["sources", "5", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/5/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIlV4f2GTVb5_B4ADHTi"} ], 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.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 13, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/5/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.51421.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/force_metadata_refresh", host: "pinchflat.efe32w.uncld.dev", peer: {{10, 210, 0, 2}, 39726}, bindings: %{}, sock: {{10, 210, 2, 8}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.efe32w.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.52", "x-forwarded-host" => "pinchflat.efe32w.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 13, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.efe32w.uncld.dev", method: "GET", owner: #PID<0.51437.0>, params: %{}, path_info: ["sources", "5", "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.efe32w.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.efe32w.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.52"}, {"x-forwarded-host", "pinchflat.efe32w.uncld.dev"}, (truncated)