03:00:48.148 [debug] QUERY OK source="sources" db=0.1ms idle=3.8ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-17 03:00:48Z], ~U[2026-10-17 03:00:48Z], 3] 03:00:48.150 [debug] QUERY OK source="media_items" db=1.3ms idle=3.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:00:48.152 [debug] QUERY OK source="tasks" db=0.2ms idle=3.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16320, 1922, ~U[2026-10-17 03:00:48Z], ~U[2026-10-17 03:00:48Z]] 03:00:48.155 [debug] QUERY OK source="tasks" db=0.2ms idle=2.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16321, 5378, ~U[2026-10-17 03:00:48Z], ~U[2026-10-17 03:00:48Z]] 03:00:48.158 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792206048158428361,"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"]} 03:00:48.158 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792206048158474386,"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"]} 03:00:48.159 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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" = ?) [5378] 03:00:48.159 [debug] QUERY OK source="media_items" db=0.3ms idle=1.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [1922] 03:00:48.159 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:00:48.159 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:00:48.159 [debug] QUERY OK source="sources" db=0.2ms idle=0.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:48.159 [debug] QUERY OK source="sources" db=0.2ms idle=0.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:48.160 [debug] QUERY OK source="media_profiles" db=0.3ms idle=0.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:48.160 [debug] QUERY OK source="media_profiles" db=0.3ms idle=0.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:48.160 [debug] QUERY OK source="media_items" db=0.3ms idle=0.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 [5378] 03:00:48.160 [debug] QUERY OK source="media_items" db=0.2ms idle=0.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 [1922] 03:00:48.161 [debug] QUERY OK source="tasks" db=0.1ms idle=0.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16322, 13649, ~U[2026-10-17 03:00:48Z], ~U[2026-10-17 03:00:48Z]] 03:00:48.162 [debug] QUERY OK source="tasks" db=0.2ms idle=1.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16323, 13717, ~U[2026-10-17 03:00:48Z], ~U[2026-10-17 03:00:48Z]] 03:00:48.164 [debug] QUERY OK source="tasks" db=0.1ms idle=1.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16324, 37712, ~U[2026-10-17 03:00:48Z], ~U[2026-10-17 03:00:48Z]] 03:00:48.463 [debug] QUERY OK source="tasks" db=298.9ms idle=1.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16325, 47311, ~U[2026-10-17 03:00:48Z], ~U[2026-10-17 03:00:48Z]] 03:00:48.466 [debug] QUERY OK source="media_items" db=1.3ms idle=301.0ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 03:00:48.466 [debug] QUERY OK source="media_items" db=0.3ms idle=301.8ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 03:00:48.547 [debug] QUERY OK source="tasks" db=0.2ms idle=82.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16326, 3, ~U[2026-10-17 03:00:48Z], ~U[2026-10-17 03:00:48Z]] 03:00:48.548 [info] {"args":{"id":3},"id":16288,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":32890228,"event":"job:stop","queue_time":254136,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:00:48.563 [debug] QUERY OK source="media_metadata" db=0.2ms idle=96.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" = ?) [5378] 03:00:48.564 [debug] QUERY OK source="media_profiles" db=0.1ms idle=16.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] 03:00:48.564 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:00:48.564 [debug] QUERY OK source="settings" db=0.0ms idle=16.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:48.589 [debug] QUERY OK source="media_metadata" db=0.1ms idle=35.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" = ?) [1922] 03:00:48.590 [debug] Running yt-dlp command for action: get_downloadable_status 03:00:48.590 [debug] QUERY OK source="media_profiles" db=0.2ms idle=26.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:48.590 [debug] QUERY OK source="settings" db=0.1ms idle=26.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:48.590 [debug] QUERY OK source="settings" db=0.0ms idle=26.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:48.591 [debug] QUERY OK source="settings" db=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 [] 03:00:48.591 [debug] Running yt-dlp command for action: get_downloadable_status 03:00:48.591 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:48.591 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:48.591 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/40/3e/403e630369274c1157a253145b0721808579573f34003cbb8d7475503719f590.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:00:48.591 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:48.591 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:48.592 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:48.592 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/14/9c/149cf9ae68a7a7a90cee3cec199ab841c953cfee2ea20a1abda0618dd4f8b097.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:00:49.966 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/40/3e/403e630369274c1157a253145b0721808579573f34003cbb8d7475503719f590.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:00:49.966 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:00:49.967 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1808399,"event":"job:exception","queue_time":157783,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:00:49.973 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792206049973520378,"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"]} 03:00:49.974 [debug] QUERY OK source="media_items" db=0.1ms idle=1381.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" = ?) [13649] 03:00:49.974 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:00:49.974 [debug] QUERY OK source="sources" db=0.2ms idle=1287.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:49.975 [debug] QUERY OK source="media_profiles" db=0.1ms idle=286.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] 03:00:49.975 [debug] QUERY OK source="media_items" db=0.4ms idle=7.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 [13649] 03:00:50.041 [debug] QUERY OK source="media_metadata" db=0.1ms idle=68.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" = ?) [13649] 03:00:50.042 [debug] QUERY OK source="media_profiles" db=0.1ms idle=67.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] 03:00:50.042 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:00:50.042 [debug] QUERY OK source="settings" db=0.0ms idle=67.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:50.042 [debug] Running yt-dlp command for action: get_downloadable_status 03:00:50.043 [debug] QUERY OK source="settings" db=0.0ms idle=67.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:50.043 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:50.043 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:50.043 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/4a/3d4aa47e90a02800caf8c3f50930ed7116a6c23ce38e9a62424eb0ad7c4f3d3f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:00:50.299 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/14/9c/149cf9ae68a7a7a90cee3cec199ab841c953cfee2ea20a1abda0618dd4f8b097.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:00:50.300 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:00:50.300 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":2141829,"event":"job:exception","queue_time":157783,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:00:50.307 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792206050307585777,"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"]} 03:00:50.308 [debug] QUERY OK source="media_items" db=0.2ms idle=264.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" = ?) [13717] 03:00:50.308 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:00:50.308 [debug] QUERY OK source="sources" db=0.1ms idle=264.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:50.308 [debug] QUERY OK source="media_profiles" db=0.1ms idle=265.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] 03:00:50.309 [debug] QUERY OK source="media_items" db=0.1ms idle=8.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13717] 03:00:50.309 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [13717] 03:00:50.310 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:00:50.310 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:50.310 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:50.310 [debug] Running yt-dlp command for action: get_downloadable_status 03:00:50.311 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:50.311 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:50.311 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:50.311 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/24/41/24419c8c255a59cd19ffb4436ea6eabf2e2e84c72c245e14287cef9a3f26eb16.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:00:51.376 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/4a/3d4aa47e90a02800caf8c3f50930ed7116a6c23ce38e9a62424eb0ad7c4f3d3f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:00:51.377 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:00:51.377 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1403695,"event":"job:exception","queue_time":1972827,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:00:51.384 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792206051384578601,"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"]} 03:00:51.385 [debug] QUERY OK source="media_items" db=0.1ms idle=1073.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" = ?) [37712] 03:00:51.385 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:00:51.385 [debug] QUERY OK source="sources" db=0.1ms idle=1073.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:51.385 [debug] QUERY OK source="media_profiles" db=0.1ms idle=695.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] 03:00:51.386 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [37712] 03:00:51.444 [debug] QUERY OK source="media_metadata" db=0.1ms idle=59.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" = ?) [37712] 03:00:51.444 [debug] QUERY OK source="media_profiles" db=0.0ms idle=59.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] 03:00:51.445 [debug] QUERY OK source="settings" db=0.1ms idle=59.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:51.445 [debug] QUERY OK source="settings" db=0.0ms idle=59.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:51.445 [debug] Running yt-dlp command for action: get_downloadable_status 03:00:51.485 [debug] QUERY OK source="settings" db=0.2ms idle=99.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:51.485 [debug] QUERY OK source="settings" db=0.1ms idle=41.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:51.486 [debug] QUERY OK source="settings" db=0.1ms idle=41.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:51.486 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/03/fe03b9ba7634b683b2f44492e43737ef9b54f241f50da93a15b5adf49678b2d1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:00:51.619 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/24/41/24419c8c255a59cd19ffb4436ea6eabf2e2e84c72c245e14287cef9a3f26eb16.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:00:51.619 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:00:51.620 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1312493,"event":"job:exception","queue_time":2306852,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:00:51.627 [info] {"args":{"id":47311},"id":16325,"meta":{},"system_time":1792206051627620176,"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"]} 03:00:51.628 [debug] QUERY OK source="media_items" db=0.3ms idle=142.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" = ?) [47311] 03:00:51.628 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:00:51.628 [debug] QUERY OK source="sources" db=0.1ms idle=142.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:51.628 [debug] QUERY OK source="media_profiles" db=0.1ms idle=142.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] 03:00:51.629 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [47311] 03:00:51.629 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [47311] 03:00:51.630 [debug] QUERY OK source="media_profiles" db=0.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] 03:00:51.630 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:51.630 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:51.630 [debug] Running yt-dlp command for action: get_downloadable_status 03:00:51.710 [debug] QUERY OK source="settings" db=0.1ms idle=80.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:51.711 [debug] QUERY OK source="settings" db=0.2ms idle=80.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:51.711 [debug] QUERY OK source="settings" db=0.0ms idle=80.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:51.711 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x6LKg_aamzI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/90/b1/90b13e9eae6d655a07b0075a5409826e7335a7f7fc075a77c3534c3cebde14c7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:00:53.048 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x6LKg_aamzI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/90/b1/90b13e9eae6d655a07b0075a5409826e7335a7f7fc075a77c3534c3cebde14c7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] x6LKg_aamzI: Video unavailable 03:00:53.048 [error] yt-dlp download error for media item #47311: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] x6LKg_aamzI: Video unavailable\n" 03:00:53.049 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] x6LKg_aamzI: Video unavailable\n" 03:00:53.049 [info] {"args":{"id":47311},"id":16325,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1421555,"event":"job:stop","queue_time":3626831,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:00:53.228 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/03/fe03b9ba7634b683b2f44492e43737ef9b54f241f50da93a15b5adf49678b2d1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:00:53.228 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:00:53.229 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1843893,"event":"job:exception","queue_time":3383863,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:00.867 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:01:04.016 [info] {"source":"oban","duration":1025,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:01:07.714 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792206067714494840,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:07.715 [debug] QUERY OK source="media_items" db=0.1ms idle=1008.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" = ?) [5378] 03:01:07.715 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:07.715 [debug] QUERY OK source="sources" db=0.0ms idle=726.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:07.715 [debug] QUERY OK source="media_profiles" db=0.1ms idle=726.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] 03:01:07.715 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [5378] 03:01:07.716 [debug] QUERY OK source="media_metadata" db=0.0ms idle=1.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [5378] 03:01:07.716 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:07.716 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:07.716 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:07.717 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:07.757 [debug] QUERY OK source="settings" db=0.1ms idle=41.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:07.758 [debug] QUERY OK source="settings" db=0.1ms idle=41.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:07.758 [debug] QUERY OK source="settings" db=0.1ms idle=41.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:07.758 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f1/b2/f1b28f15a5e2b5a2a08df8f83d1b15128181e364c39385fb7433b316629ced6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:08.715 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792206068715735993,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:08.716 [debug] QUERY OK source="media_items" db=0.1ms idle=958.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" = ?) [1922] 03:01:08.716 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:08.716 [debug] QUERY OK source="sources" db=0.1ms idle=958.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" = ?) [3] 03:01:08.717 [debug] QUERY OK source="media_profiles" db=0.1ms idle=958.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] 03:01:08.717 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [1922] 03:01:08.718 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.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" = ?) [1922] 03:01:08.718 [debug] QUERY OK source="media_profiles" db=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] 03:01:08.719 [debug] QUERY OK source="settings" db=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 [] 03:01:08.719 [debug] QUERY OK source="settings" db=0.0ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:08.719 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:08.720 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:08.720 [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 [] 03:01:08.720 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:08.720 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/61/6c/616c514c4d163e5c646954f782fa31b6448ed54abd2d1d03eb71e9dd8c193536.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:09.142 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f1/b2/f1b28f15a5e2b5a2a08df8f83d1b15128181e364c39385fb7433b316629ced6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:01:09.142 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:01:09.143 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1428590,"event":"job:exception","queue_time":746911,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:09.718 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792206069718748905,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:09.719 [debug] QUERY OK source="media_items" db=0.1ms idle=998.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" = ?) [13649] 03:01:09.719 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:09.719 [debug] QUERY OK source="sources" db=0.1ms idle=575.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:09.720 [debug] QUERY OK source="media_profiles" db=0.1ms idle=569.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] 03:01:09.720 [debug] QUERY OK source="media_items" db=0.1ms idle=8.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13649] 03:01:09.720 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [13649] 03:01:09.721 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:09.721 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:09.721 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:09.721 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:09.721 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:09.722 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:09.722 [debug] QUERY OK source="settings" db=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 [] 03:01:09.722 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/ed/f2ed562b93688d8628615542aac12752ce892360da47e9d6e13866ee02335ab2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:10.539 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/61/6c/616c514c4d163e5c646954f782fa31b6448ed54abd2d1d03eb71e9dd8c193536.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:01:10.540 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:01:10.540 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1824427,"event":"job:exception","queue_time":414546,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:10.547 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792206070547610587,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:10.548 [debug] QUERY OK source="media_items" db=0.2ms idle=825.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" = ?) [13717] 03:01:10.548 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:10.548 [debug] QUERY OK source="sources" db=0.0ms idle=826.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:10.548 [debug] QUERY OK source="media_profiles" db=0.1ms idle=826.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] 03:01:10.549 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [13717] 03:01:10.578 [debug] QUERY OK source="media_metadata" db=0.1ms idle=31.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" = ?) [13717] 03:01:10.579 [debug] QUERY OK source="media_profiles" db=0.1ms idle=30.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] 03:01:10.579 [debug] QUERY OK source="settings" db=0.1ms idle=31.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:10.579 [debug] QUERY OK source="settings" db=0.0ms idle=31.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:10.580 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:10.635 [debug] QUERY OK source="settings" db=0.2ms idle=85.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:10.635 [debug] QUERY OK source="settings" db=0.1ms idle=56.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:10.635 [debug] QUERY OK source="settings" db=0.1ms idle=56.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:10.635 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9f/55/9f55745a5a3bc3b79560d3d60f5bd159e9d2029efbdac0a94636f4979b7043de.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:11.124 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/ed/f2ed562b93688d8628615542aac12752ce892360da47e9d6e13866ee02335ab2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:01:11.124 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:01:11.125 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1405927,"event":"job:exception","queue_time":340625,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:11.722 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792206071721880458,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:11.722 [debug] QUERY OK source="media_items" db=0.2ms idle=1008.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" = ?) [37712] 03:01:11.722 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:11.722 [debug] QUERY OK source="sources" db=0.1ms idle=597.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" = ?) [3] 03:01:11.723 [debug] QUERY OK source="media_profiles" db=0.1ms idle=591.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] 03:01:11.723 [debug] QUERY OK source="media_items" db=0.2ms idle=8.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [37712] 03:01:11.724 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [37712] 03:01:11.724 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:11.724 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:11.724 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:11.724 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:11.725 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:11.725 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:11.725 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:11.725 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d8/c7/d8c7d07ef19a89454f5a22a35571354e7ab1974df3e591315243187c63f6c92b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:12.043 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9f/55/9f55745a5a3bc3b79560d3d60f5bd159e9d2029efbdac0a94636f4979b7043de.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:01:12.043 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:01:12.043 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1495687,"event":"job:exception","queue_time":926728,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:13.472 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d8/c7/d8c7d07ef19a89454f5a22a35571354e7ab1974df3e591315243187c63f6c92b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:01:13.472 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:01:13.473 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1751195,"event":"job:exception","queue_time":492347,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:28.739 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792206088739654766,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:28.740 [debug] QUERY OK source="media_items" db=0.1ms idle=1751.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" = ?) [5378] 03:01:28.740 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:28.740 [debug] QUERY OK source="sources" db=0.1ms idle=1751.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" = ?) [3] 03:01:28.740 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1009.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] 03:01:28.741 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [5378] 03:01:28.741 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [5378] 03:01:28.741 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:28.742 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:28.742 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:28.742 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:28.784 [debug] QUERY OK source="settings" db=0.1ms idle=43.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:28.784 [debug] QUERY OK source="settings" db=0.2ms idle=43.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:28.785 [debug] QUERY OK source="settings" db=0.1ms idle=43.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:28.785 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/03/38/03384feb657f23a6a5981837b5d167a65e464f295a36f0841eb3d15f967f6f6f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:29.741 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792206089741627459,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:29.742 [debug] QUERY OK source="media_items" db=0.3ms idle=957.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" = ?) [1922] 03:01:29.742 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:29.742 [debug] QUERY OK source="sources" db=0.1ms idle=957.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" = ?) [3] 03:01:29.742 [debug] QUERY OK source="media_profiles" db=0.0ms idle=957.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] 03:01:29.743 [debug] QUERY OK source="media_items" db=0.2ms idle=8.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1922] 03:01:29.781 [debug] QUERY OK source="media_metadata" db=0.1ms idle=40.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" = ?) [1922] 03:01:29.782 [debug] QUERY OK source="media_profiles" db=0.1ms idle=39.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] 03:01:29.782 [debug] QUERY OK source="settings" db=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 [] 03:01:29.782 [debug] QUERY OK source="settings" db=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 [] 03:01:29.783 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:29.783 [debug] QUERY OK source="settings" db=0.0ms idle=40.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:29.783 [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 [] 03:01:29.783 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:29.784 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/31/22/312220713060d1ac5ba468dc2f4f83ccce62b6c247879b0c16e7e73cf7b5a111.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:30.227 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/03/38/03384feb657f23a6a5981837b5d167a65e464f295a36f0841eb3d15f967f6f6f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:01:30.227 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:01:30.228 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1488011,"event":"job:exception","queue_time":595696,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:30.743 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792206090743393727,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:30.743 [debug] QUERY OK source="media_items" db=0.1ms idle=959.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" = ?) [13649] 03:01:30.744 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:30.744 [debug] QUERY OK source="sources" db=0.2ms idle=516.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:30.744 [debug] QUERY OK source="media_profiles" db=0.1ms idle=510.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] 03:01:30.745 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [13649] 03:01:30.772 [debug] QUERY OK source="media_metadata" db=0.1ms idle=28.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" = ?) [13649] 03:01:30.772 [debug] QUERY OK source="media_profiles" db=0.1ms idle=28.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] 03:01:30.773 [debug] QUERY OK source="settings" db=0.0ms idle=28.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:30.773 [debug] QUERY OK source="settings" db=0.0ms idle=28.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:30.773 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:30.774 [debug] QUERY OK source="settings" db=0.0ms idle=28.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:30.774 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:30.774 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:30.774 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/99/2f/992f2ee94397ebda4ea119bdaa1d76324a49341fa38cf2d0a1f0e349406502a7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:31.536 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/31/22/312220713060d1ac5ba468dc2f4f83ccce62b6c247879b0c16e7e73cf7b5a111.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:01:31.536 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:01:31.537 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1795500,"event":"job:exception","queue_time":200621,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:32.163 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/99/2f/992f2ee94397ebda4ea119bdaa1d76324a49341fa38cf2d0a1f0e349406502a7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:01:32.164 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:01:32.164 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1420930,"event":"job:exception","queue_time":618050,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:32.746 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792206092746636337,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:32.747 [debug] QUERY OK source="media_items" db=0.1ms idle=757.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" = ?) [13717] 03:01:32.747 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:32.747 [debug] QUERY OK source="sources" db=0.1ms idle=582.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" = ?) [3] 03:01:32.747 [debug] QUERY OK source="media_profiles" db=0.0ms idle=576.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] 03:01:32.748 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [13717] 03:01:32.803 [debug] QUERY OK source="media_metadata" db=0.1ms idle=56.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" = ?) [13717] 03:01:32.803 [debug] QUERY OK source="media_profiles" db=0.1ms idle=56.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] 03:01:32.803 [debug] QUERY OK source="settings" db=0.0ms idle=56.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:32.804 [debug] QUERY OK source="settings" db=0.0ms idle=56.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:32.804 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:32.804 [debug] QUERY OK source="settings" db=0.0ms idle=56.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:32.804 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:32.805 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:32.805 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/23/45/23451a722e35b4505517bd0ccb3c705852d588f584245fdff2507be5362f8664.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:33.748 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792206093748519102,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:33.749 [debug] QUERY OK source="media_items" db=0.2ms idle=943.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" = ?) [37712] 03:01:33.749 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:33.749 [debug] QUERY OK source="sources" db=0.0ms idle=944.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:33.749 [debug] QUERY OK source="media_profiles" db=0.1ms idle=944.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] 03:01:33.750 [debug] QUERY OK source="media_items" db=0.2ms idle=7.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 [37712] 03:01:33.805 [debug] QUERY OK source="media_metadata" db=0.1ms idle=56.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [37712] 03:01:33.805 [debug] QUERY OK source="media_profiles" db=0.2ms idle=56.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] 03:01:33.806 [debug] QUERY OK source="settings" db=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 [] 03:01:33.806 [debug] QUERY OK source="settings" db=0.1ms idle=56.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:33.806 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:33.836 [debug] QUERY OK source="settings" db=0.1ms idle=85.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:33.836 [debug] QUERY OK source="settings" db=0.1ms idle=30.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:33.836 [debug] QUERY OK source="settings" db=0.0ms idle=30.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:33.836 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/be/24/be24679678e95692cba54e05b629e166d32e8c293a91937f6d9cb10e4aeb5be9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:34.019 [info] {"source":"oban","duration":1055,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:01:34.137 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/23/45/23451a722e35b4505517bd0ccb3c705852d588f584245fdff2507be5362f8664.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:01:34.137 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:01:34.138 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1391198,"event":"job:exception","queue_time":702516,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:35.567 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/be/24/be24679678e95692cba54e05b629e166d32e8c293a91937f6d9cb10e4aeb5be9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:01:35.567 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:01:35.568 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1819399,"event":"job:exception","queue_time":274665,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:53.770 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792206113770620102,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:53.771 [debug] QUERY OK source="media_items" db=0.1ms idle=781.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" = ?) [5378] 03:01:53.771 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:53.771 [debug] QUERY OK source="sources" db=0.1ms idle=782.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" = ?) [3] 03:01:53.771 [debug] QUERY OK source="media_profiles" db=0.1ms idle=782.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] 03:01:53.772 [debug] QUERY OK source="media_items" db=0.2ms idle=7.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [5378] 03:01:53.806 [debug] QUERY OK source="media_metadata" db=0.1ms idle=36.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" = ?) [5378] 03:01:53.807 [debug] QUERY OK source="media_profiles" db=0.1ms idle=35.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] 03:01:53.807 [debug] QUERY OK source="settings" db=0.1ms idle=35.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:53.807 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:53.808 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:53.847 [debug] QUERY OK source="settings" db=0.1ms idle=74.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:53.847 [debug] QUERY OK source="settings" db=0.0ms idle=40.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:53.847 [debug] QUERY OK source="settings" db=0.0ms idle=40.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:53.847 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/97/c097ec7d3a48e6584d54ad61a8f9492acf7e01ef274c0314f97b96ee2b536093.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:55.192 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/97/c097ec7d3a48e6584d54ad61a8f9492acf7e01ef274c0314f97b96ee2b536093.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:01:55.192 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:01:55.193 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1421880,"event":"job:exception","queue_time":542111,"attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:55.773 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792206115773564117,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:55.773 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792206115773637874,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:55.774 [debug] QUERY OK source="media_items" db=0.2ms idle=784.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" = ?) [1922] 03:01:55.774 [debug] QUERY OK source="media_items" db=0.2ms idle=581.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" = ?) [13649] 03:01:55.774 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:55.774 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:55.774 [debug] QUERY OK source="sources" db=0.1ms idle=575.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:55.774 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [3] 03:01:55.775 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:55.775 [debug] QUERY OK source="media_profiles" db=0.1ms idle=0.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:55.775 [debug] QUERY OK source="media_items" db=0.2ms idle=0.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1922] 03:01:55.775 [debug] QUERY OK source="media_items" db=0.4ms idle=0.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 [13649] 03:01:56.106 [debug] QUERY OK source="media_metadata" db=0.1ms idle=331.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [13649] 03:01:56.107 [debug] QUERY OK source="media_profiles" db=0.3ms idle=331.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] 03:01:56.107 [debug] QUERY OK source="media_metadata" db=0.4ms idle=332.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" = ?) [1922] 03:01:56.107 [debug] QUERY OK source="settings" db=0.1ms idle=332.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:56.108 [debug] QUERY OK source="media_profiles" db=0.2ms idle=332.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] 03:01:56.108 [debug] QUERY OK source="settings" db=0.2ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:56.108 [debug] QUERY OK source="settings" db=0.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:56.108 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:56.108 [debug] QUERY OK source="settings" db=0.2ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:56.139 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:56.139 [debug] QUERY OK source="settings" db=0.1ms idle=31.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:56.140 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:01:56.140 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:01:56.140 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/92/7c/927c9380a9111da73156e93326e5ac161a05f1df457db272b1476135e7dceb62.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:56.182 [debug] QUERY OK source="settings" db=0.1ms idle=74.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:56.183 [debug] QUERY OK source="settings" db=0.1ms idle=74.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:56.183 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:56.183 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4d/ee/4dee4dc1fe247a5f3419337152e96623a7735479557486cad4e65d1e920328f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:57.503 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/92/7c/927c9380a9111da73156e93326e5ac161a05f1df457db272b1476135e7dceb62.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:01:57.503 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:01:57.504 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1729996,"event":"job:exception","queue_time":608467,"attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:57.931 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4d/ee/4dee4dc1fe247a5f3419337152e96623a7735479557486cad4e65d1e920328f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:01:57.932 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:01:57.933 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":2158681,"event":"job:exception","queue_time":235646,"attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:58.778 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792206118777876202,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:58.778 [debug] QUERY OK source="media_items" db=0.1ms idle=1008.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" = ?) [13717] 03:01:58.778 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:58.779 [debug] QUERY OK source="sources" db=0.1ms idle=846.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:58.779 [debug] QUERY OK source="media_profiles" db=0.1ms idle=839.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] 03:01:58.779 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [13717] 03:01:58.831 [debug] QUERY OK source="media_metadata" db=0.1ms idle=53.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" = ?) [13717] 03:01:58.831 [debug] QUERY OK source="media_profiles" db=0.0ms idle=53.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] 03:01:58.832 [debug] QUERY OK source="settings" db=0.0ms idle=52.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:58.832 [debug] QUERY OK source="settings" db=0.0ms idle=52.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:58.832 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:58.883 [debug] QUERY OK source="settings" db=0.1ms idle=103.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:58.883 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:01:58.883 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:01:58.884 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2a/e7/2ae7bcd805c3d54f9657497ec9472a4890d34729e034d5312b13ec0df7cd3f14.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:59.779 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792206119779615491,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:59.780 [debug] QUERY OK source="media_items" db=0.2ms idle=896.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" = ?) [37712] 03:01:59.780 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:59.780 [debug] QUERY OK source="sources" db=0.1ms idle=896.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:59.780 [debug] QUERY OK source="media_profiles" db=0.0ms idle=896.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] 03:01:59.781 [debug] QUERY OK source="media_items" db=0.2ms idle=7.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [37712] 03:01:59.826 [debug] QUERY OK source="media_metadata" db=0.2ms idle=46.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" = ?) [37712] 03:01:59.826 [debug] QUERY OK source="media_profiles" db=0.1ms idle=46.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] 03:01:59.827 [debug] QUERY OK source="settings" db=0.0ms idle=46.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:59.827 [debug] QUERY OK source="settings" db=0.0ms idle=46.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:59.827 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:59.862 [debug] QUERY OK source="settings" db=0.1ms idle=81.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:59.863 [debug] QUERY OK source="settings" db=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 [] 03:01:59.863 [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 [] 03:01:59.863 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/24/1024396794bc28a90da43e946509c6ea1bca009bbae3a856764c49e29076e6af.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:02:00.289 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2a/e7/2ae7bcd805c3d54f9657497ec9472a4890d34729e034d5312b13ec0df7cd3f14.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:02:00.290 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:02:00.290 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1512332,"event":"job:exception","queue_time":638965,"attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:00.868 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:02:01.789 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/24/1024396794bc28a90da43e946509c6ea1bca009bbae3a856764c49e29076e6af.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:02:01.789 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:02:01.790 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":2010009,"event":"job:exception","queue_time":210897,"attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:04.021 [info] {"source":"oban","duration":1135,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:02:28.810 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792206148810695190,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:28.811 [debug] QUERY OK source="media_items" db=0.2ms idle=1008.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" = ?) [5378] 03:02:28.811 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:02:28.811 [debug] QUERY OK source="sources" db=0.1ms idle=822.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:02:28.811 [debug] QUERY OK source="media_profiles" db=0.1ms idle=822.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] 03:02:28.812 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [5378] 03:02:28.812 [debug] QUERY OK source="media_metadata" db=0.0ms idle=1.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [5378] 03:02:28.812 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:02:28.813 [debug] QUERY OK source="settings" db=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 [] 03:02:28.813 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:02:28.813 [debug] Running yt-dlp command for action: get_downloadable_status 03:02:28.813 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:02:28.814 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:02:28.814 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:28.814 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f9/34/f93425e7d67f8f9b86a09f99916b84b048a6dce11e5ea88c5c75a20b510ec05c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:02:30.146 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f9/34/f93425e7d67f8f9b86a09f99916b84b048a6dce11e5ea88c5c75a20b510ec05c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:02:30.147 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:02:30.147 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1336599,"event":"job:exception","queue_time":617271,"attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:30.813 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792206150813699738,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:30.813 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792206150813755942,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:30.814 [debug] QUERY OK source="media_items" db=0.2ms idle=825.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" = ?) [1922] 03:02:30.814 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:02:30.814 [debug] QUERY OK source="media_items" db=0.4ms idle=666.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" = ?) [13649] 03:02:30.814 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:02:30.814 [debug] QUERY OK source="sources" db=0.2ms idle=660.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:02:30.814 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [3] 03:02:30.815 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:02:30.815 [debug] QUERY OK source="media_profiles" db=0.2ms idle=0.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:02:30.815 [debug] QUERY OK source="media_items" db=0.4ms 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 [1922] 03:02:30.815 [debug] QUERY OK source="media_items" db=0.4ms idle=0.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 [13649] 03:02:30.816 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [1922] 03:02:30.816 [debug] QUERY OK source="media_metadata" db=0.1ms 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" = ?) [13649] 03:02:30.816 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 03:02:30.817 [debug] QUERY OK source="media_profiles" db=0.6ms idle=0.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:02:30.817 [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 [] 03:02:30.817 [debug] QUERY OK source="settings" db=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 [] 03:02:30.818 [debug] QUERY OK source="settings" db=0.2ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:30.818 [debug] QUERY OK source="settings" db=0.2ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:30.818 [debug] Running yt-dlp command for action: get_downloadable_status 03:02:30.818 [debug] Running yt-dlp command for action: get_downloadable_status 03:02:30.878 [debug] QUERY OK source="settings" db=0.1ms idle=60.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:30.878 [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 [] 03:02:30.879 [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 [] 03:02:30.879 [debug] QUERY OK source="settings" db=0.3ms idle=60.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:30.879 [debug] QUERY OK source="settings" db=0.1ms idle=61.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:30.879 [debug] QUERY OK source="settings" db=0.1ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:30.879 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0b/0d/0b0d2e43a958ebfbe1127a8d2b426b936f60ce9d473cc6e8d154e25fdb887e54.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:02:30.879 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e3/42/e342b0e7dcf83f58a1a76095a35268011415d2bcfc3585f12a30dc659ba54a80.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:02:32.282 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e3/42/e342b0e7dcf83f58a1a76095a35268011415d2bcfc3585f12a30dc659ba54a80.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:02:32.282 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:02:32.283 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1468876,"event":"job:exception","queue_time":309109,"attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:32.289 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792206152289691130,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:32.290 [debug] QUERY OK source="media_items" db=0.2ms idle=301.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" = ?) [13717] 03:02:32.290 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:02:32.290 [debug] QUERY OK source="sources" db=0.1ms idle=301.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:02:32.291 [debug] QUERY OK source="media_profiles" db=0.1ms idle=302.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] 03:02:32.291 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [13717] 03:02:32.292 [debug] QUERY OK source="media_metadata" db=0.1ms 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" = ?) [13717] 03:02:32.292 [debug] QUERY OK source="media_profiles" db=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] 03:02:32.293 [debug] QUERY OK source="settings" db=0.0ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:32.293 [debug] QUERY OK source="settings" db=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:32.293 [debug] Running yt-dlp command for action: get_downloadable_status 03:02:32.294 [debug] QUERY OK source="settings" db=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:32.294 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:32.294 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:32.294 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7e/a8/7ea8a6376bcf9bd239b1931a9414dab57423a40c8c9bc87ca555171c25ba9074.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:02:32.610 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0b/0d/0b0d2e43a958ebfbe1127a8d2b426b936f60ce9d473cc6e8d154e25fdb887e54.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:02:32.610 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:02:32.611 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1796885,"event":"job:exception","queue_time":880449,"attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:32.817 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792206152817880678,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:32.818 [debug] QUERY OK source="media_items" db=0.2ms 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."id" = ?) [37712] 03:02:32.818 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:02:32.819 [debug] QUERY OK source="sources" db=0.2ms idle=207.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:02:32.819 [debug] QUERY OK source="media_profiles" db=0.1ms idle=201.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] 03:02:32.819 [debug] QUERY OK source="media_items" db=0.3ms idle=8.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [37712] 03:02:32.820 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [37712] 03:02:32.820 [debug] QUERY OK source="media_profiles" db=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] 03:02:32.821 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:32.821 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:32.821 [debug] Running yt-dlp command for action: get_downloadable_status 03:02:32.857 [debug] QUERY OK source="settings" db=0.1ms idle=37.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:02:32.857 [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 [] 03:02:32.857 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:02:32.857 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2a/ed/2aede0edb6ae325aa251408c92d1f9e362141b0bd6130881f285bc52257d1ca6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:02:33.903 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7e/a8/7ea8a6376bcf9bd239b1931a9414dab57423a40c8c9bc87ca555171c25ba9074.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] unable to extract yt initial data; please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U WARNING: [youtube] Incomplete data received in embedded initial data; re-fetching using API. WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:02:33.903 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] unable to extract yt initial data; please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U\nWARNING: [youtube] Incomplete data received in embedded initial data; re-fetching using API.\nWARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:02:33.904 [debug] QUERY OK source="media_items" db=0.7ms idle=1082.4ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: [youtube] unable to extract yt initial data; please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U\nWARNING: [youtube] Incomplete data received in embedded initial data; re-fetching using API.\nWARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n", ~U[2026-10-17 03:02:33Z], 13717] 03:02:33.905 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1614968,"event":"job:exception","queue_time":998593,"attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:02:34.023 [info] {"source":"oban","duration":1180,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:02:34.602 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2a/ed/2aede0edb6ae325aa251408c92d1f9e362141b0bd6130881f285bc52257d1ca6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:02:34.602 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:02:34.603 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1785217,"event":"job:exception","queue_time":27142,"attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:00.869 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:03:04.025 [info] {"source":"oban","duration":1103,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:03:04.853 [info] {"args":{"id":4},"id":16290,"meta":{},"system_time":1792206184853514461,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:03:04.854 [debug] QUERY OK source="sources" db=0.1ms idle=864.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" = ?) [4] 03:03:04.854 [debug] QUERY OK source="settings" db=0.2ms idle=865.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:04.855 [debug] QUERY OK source="media_items" db=0.9ms idle=829.6ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 03:03:04.855 [debug] QUERY OK source="media_items" db=0.2ms idle=8.7ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 03:03:04.856 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:04.856 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:04.856 [debug] QUERY OK source="settings" db=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:04.898 [debug] QUERY OK source="media_items" db=1.6ms idle=41.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [4] 03:03:04.899 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 03:03:04.899 [debug] Current batch of media processed. Will check again in 1000ms 03:03:04.899 [debug] QUERY OK source="settings" db=0.1ms idle=43.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:04.900 [debug] QUERY OK source="settings" db=0.0ms idle=43.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:04.900 [debug] QUERY OK source="settings" db=0.0ms idle=43.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:04.900 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@yunjadong --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/54/bf/54bfa99bf49ace71649de2e04b83b1a4b5560afbe42dfad4c3aeab3f51900c01.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/12/ff/12ff2bdc76f0ee6599ed2c9c3181787af5581397b1e490e8af318b4a6c161adc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:05.900 [debug] Current batch of media processed. Will check again in 1000ms 03:03:06.901 [debug] Current batch of media processed. Will check again in 1000ms 03:03:07.902 [debug] Current batch of media processed. Will check again in 1000ms 03:03:08.904 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "duration" => 1146, "filename" => "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", "id" => "eyiW3-h3Pfs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=eyiW3-h3Pfs", "playlist_index" => 1, "timestamp" => 1792141224, "title" => "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", "upload_date" => "20261016"} 03:03:08.904 [debug] QUERY OK source="sources" db=0.2ms idle=915.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:08.905 [debug] QUERY OK source="sources" db=0.2ms idle=916.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" = ?) [4] 03:03:08.906 [debug] QUERY OK source="media_items" db=0.9ms idle=916.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 09:00:24Z], 4] 03:03:08.908 [debug] QUERY OK source="media_items" db=1.2ms idle=917.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", "df122513-c542-4d00-ae18-8cf8332afdc7", false, 1146, false, "eyiW3-h3Pfs", "https://www.youtube.com/watch?v=eyiW3-h3Pfs", 1, "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", false, false, 4, [], 99, ~U[2026-10-16 09:00:24Z], ~U[2026-10-17 03:03:08Z], ~U[2026-10-17 03:03:08Z], "Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", 1146, false, "eyiW3-h3Pfs", "https://www.youtube.com/watch?v=eyiW3-h3Pfs", "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", false, 4, ~U[2026-10-16 09:00:24Z]] 03:03:08.908 [debug] QUERY OK source="sources" db=0.1ms idle=56.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" = ?) [4] 03:03:08.908 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:08.909 [debug] QUERY OK source="media_items" db=0.2ms 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 [50466] 03:03:08.909 [info] Kicking off download for media item #50466 (eyiW3-h3Pfs) 03:03:08.910 [debug] QUERY OK source="tasks" db=0.1ms idle=1.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16327, 50466, ~U[2026-10-17 03:03:08Z], ~U[2026-10-17 03:03:08Z]] 03:03:08.910 [debug] Current batch of media processed. Will check again in 1000ms 03:03:08.916 [info] {"args":{"id":50466},"id":16327,"meta":{},"system_time":1792206188916418208,"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"]} 03:03:08.916 [debug] QUERY OK source="media_items" db=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" = ?) [50466] 03:03:08.916 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:08.917 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [4] 03:03:08.917 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:08.917 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [50466] 03:03:08.918 [debug] QUERY OK source="media_metadata" db=0.0ms idle=1.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [50466] 03:03:08.918 [debug] QUERY OK source="media_profiles" db=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] 03:03:08.918 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:08.919 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:08.919 [debug] Running yt-dlp command for action: get_downloadable_status 03:03:08.974 [debug] QUERY OK source="settings" db=0.1ms idle=56.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:08.974 [debug] QUERY OK source="settings" db=0.0ms idle=55.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:08.974 [debug] QUERY OK source="settings" db=0.0ms idle=55.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:08.974 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=eyiW3-h3Pfs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/20/81/208194ecaae69c837151c902a23c6ed09953be2e0dcf233c32600f93814c0860.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:09.910 [debug] Current batch of media processed. Will check again in 1000ms 03:03:10.912 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "duration" => 1162, "filename" => "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", "id" => "3quu283_05I", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=3quu283_05I", "playlist_index" => 2, "timestamp" => 1792138869, "title" => "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", "upload_date" => "20261016"} 03:03:10.913 [debug] QUERY OK source="sources" db=0.3ms idle=923.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:10.913 [debug] QUERY OK source="sources" db=0.0ms idle=924.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" = ?) [4] 03:03:10.914 [debug] QUERY OK source="media_items" db=0.9ms idle=924.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 08:21:09Z], 4] 03:03:10.915 [debug] QUERY OK source="media_items" db=0.9ms idle=925.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", "cb342240-3ac0-4e80-b6e2-dc3d06fa7a88", false, 1162, false, "3quu283_05I", "https://www.youtube.com/watch?v=3quu283_05I", 2, "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", false, false, 4, [], 98, ~U[2026-10-16 08:21:09Z], ~U[2026-10-17 03:03:10Z], ~U[2026-10-17 03:03:10Z], "라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", 1162, false, "3quu283_05I", "https://www.youtube.com/watch?v=3quu283_05I", "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", false, 4, ~U[2026-10-16 08:21:09Z]] 03:03:10.915 [debug] QUERY OK source="sources" db=0.2ms idle=62.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" = ?) [4] 03:03:10.916 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:10.916 [debug] QUERY OK source="media_items" db=0.1ms 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 [50467] 03:03:10.916 [info] Kicking off download for media item #50467 (3quu283_05I) 03:03:10.917 [debug] QUERY OK source="tasks" db=0.1ms idle=1.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16328, 50467, ~U[2026-10-17 03:03:10Z], ~U[2026-10-17 03:03:10Z]] 03:03:10.917 [debug] Current batch of media processed. Will check again in 1000ms 03:03:10.923 [info] {"args":{"id":50467},"id":16328,"meta":{},"system_time":1792206190923553612,"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"]} 03:03:10.924 [debug] QUERY OK source="media_items" db=0.2ms 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 WHERE (m0."id" = ?) [50467] 03:03:10.924 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:10.924 [debug] QUERY OK source="sources" db=0.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" = ?) [4] 03:03:10.924 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:10.925 [debug] QUERY OK source="media_items" db=0.2ms idle=7.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50467] 03:03:10.973 [debug] QUERY OK source="media_metadata" db=0.1ms idle=49.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" = ?) [50467] 03:03:10.974 [debug] QUERY OK source="media_profiles" db=0.3ms idle=49.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] 03:03:10.974 [debug] QUERY OK source="settings" db=0.2ms idle=49.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:10.974 [debug] QUERY OK source="settings" db=0.1ms idle=49.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:10.975 [debug] Running yt-dlp command for action: get_downloadable_status 03:03:11.016 [debug] QUERY OK source="settings" db=0.1ms idle=91.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:11.016 [debug] QUERY OK source="settings" db=0.0ms idle=43.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:11.017 [debug] QUERY OK source="settings" db=0.2ms idle=42.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:11.017 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3quu283_05I --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f0/18/f018dcde6c52fed1ab77e4981f4418755be011f1c3fc65c31f650eb1e109a718.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:11.218 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=eyiW3-h3Pfs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/20/81/208194ecaae69c837151c902a23c6ed09953be2e0dcf233c32600f93814c0860.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:03:11.219 [debug] Running yt-dlp command for action: download 03:03:11.219 [debug] QUERY OK source="settings" db=0.2ms idle=244.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:11.219 [debug] QUERY OK source="settings" db=0.1ms idle=244.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:11.220 [debug] QUERY OK source="settings" db=0.0ms idle=203.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:11.220 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=eyiW3-h3Pfs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fd/a7/fda7f8d3d7a51c45ad9db6186e31e0e686a5d9ab0771068e0232fc7df5d43cfd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:11.918 [debug] Current batch of media processed. Will check again in 1000ms 03:03:12.920 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "duration" => 1288, "filename" => "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", "id" => "2TUZxslkX2A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=2TUZxslkX2A", "playlist_index" => 3, "timestamp" => 1792054828, "title" => "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", "upload_date" => "20261015"} 03:03:12.921 [debug] QUERY OK source="sources" db=0.2ms idle=1701.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:12.921 [debug] QUERY OK source="sources" db=0.1ms idle=1701.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" = ?) [4] 03:03:12.922 [debug] QUERY OK source="media_items" db=1.1ms idle=1701.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 09:00:28Z], 4] 03:03:12.924 [debug] QUERY OK source="media_items" db=1.0ms idle=1068.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", "8ff47cd1-f3d8-4aee-8988-a2fc000a2088", false, 1288, false, "2TUZxslkX2A", "https://www.youtube.com/watch?v=2TUZxslkX2A", 3, "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", false, false, 4, [], 98, ~U[2026-10-15 09:00:28Z], ~U[2026-10-17 03:03:12Z], ~U[2026-10-17 03:03:12Z], "터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", 1288, false, "2TUZxslkX2A", "https://www.youtube.com/watch?v=2TUZxslkX2A", "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", false, 4, ~U[2026-10-15 09:00:28Z]] 03:03:12.924 [debug] QUERY OK source="sources" db=0.1ms idle=68.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" = ?) [4] 03:03:12.924 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:12.925 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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 [50259] 03:03:12.925 [debug] Current batch of media processed. Will check again in 1000ms 03:03:13.420 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3quu283_05I --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f0/18/f018dcde6c52fed1ab77e4981f4418755be011f1c3fc65c31f650eb1e109a718.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:03:13.421 [debug] Running yt-dlp command for action: download 03:03:13.421 [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 [] 03:03:13.421 [debug] QUERY OK source="settings" db=0.0ms idle=497.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:13.422 [debug] QUERY OK source="settings" db=0.0ms idle=497.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:13.422 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3quu283_05I --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8b/a3/8ba30f6e271557abc48df28cecc89425a29db37b64648d6c0ccaf3b4c0f7eac5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:13.925 [debug] Current batch of media processed. Will check again in 1000ms 03:03:14.927 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "duration" => 557, "filename" => "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", "id" => "wN3aDOyiZbA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=wN3aDOyiZbA", "playlist_index" => 4, "timestamp" => 1791968407, "title" => "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", "upload_date" => "20261014"} 03:03:14.927 [debug] QUERY OK source="sources" db=0.3ms idle=1505.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:14.928 [debug] QUERY OK source="sources" db=0.1ms idle=1505.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" = ?) [4] 03:03:14.929 [debug] QUERY OK source="media_items" db=1.3ms idle=1071.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 09:00:07Z], 4] 03:03:14.932 [debug] QUERY OK source="media_items" db=1.6ms idle=941.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", "f2df3b55-208c-4afa-8c90-87625cd0d38d", false, 557, false, "wN3aDOyiZbA", "https://www.youtube.com/watch?v=wN3aDOyiZbA", 4, "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", false, false, 4, [], 98, ~U[2026-10-14 09:00:07Z], ~U[2026-10-17 03:03:14Z], ~U[2026-10-17 03:03:14Z], "AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", 557, false, "wN3aDOyiZbA", "https://www.youtube.com/watch?v=wN3aDOyiZbA", "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", false, 4, ~U[2026-10-14 09:00:07Z]] 03:03:14.932 [debug] QUERY OK source="sources" db=0.5ms idle=74.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" = ?) [4] 03:03:14.933 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:14.933 [debug] QUERY OK source="media_items" db=0.2ms idle=5.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 [50045] 03:03:14.934 [debug] Current batch of media processed. Will check again in 1000ms 03:03:15.935 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o·노트북LM·베오 3)에서만 짧게 들려 드리고, 나머지는 소리를 껐습니다.\n\"지금 해 볼 것\"의 화면 그림은 누를 곳을 보여 드리기 위한 도식입니다. 무료 조건과 출처는 위 PDF에 있습니다.\n나레이션은 AI 복제 음성입니다. 썸네일은 AI로 만든 이미지이며, 로고는 영상에서 다루는 각 회사의 상표입니다. 배경음은 Mixkit 라이선스 음원입니다.\n\n▶ 공식 자료 (나온 순서)\n\n2022~2023\n- OpenAI, ChatGPT 공개 글 (2022.11.30, 웹 아카이브): https://web.archive.org/web/20221130211011/https://openai.com/blog/chatgpt/\n- OpenAI, GPT-4 발표 (2023.03.14): https://openai.com/index/gpt-4-research/\n- OpenAI, GPT-4 Developer Livestream: https://youtu.be/outcGtbnMuQ\n- Microsoft, Microsoft 365 Copilot 발표 (2023.03.16): https://blogs.microsoft.com/blog/2023/03/16/introducing-microsoft-365-copilot-your-copilot-for-work/\n- Adobe, 포토샵 생성형 채우기 발표 (2023.05.23): https://news.adobe.com/news/news-details/2023/adobe-unveils-future-of-creative-cloud-with-generative-ai-as-a-creative-co-pilot-in-photoshop\n- Adobe, Introducing Generative Fill: https://youtu.be/YGNiuuJflGI\n- Adobe Photoshop, Introduction to Generative Fill: https://youtu.be/Sp6K3qpVFO0\n- Runway, Gen-2 Now Available (2023.06.07): https://youtu.be/BpoOVEEDiFA\n- OpenAI, ChatGPT can now see, hear, and speak (2023.09.25): https://openai.com/index/chatgpt-can-now-see-hear-and-speak/\n- ElevenLabs, AI Dubbing Product Demo (2023.10.10): https://youtu.be/ulaLIx0GbnI\n- Google, The capabilities of multimodal AI | Gemini Demo (2023.12.06): https://youtu.be/UIZAiXYceBI\n\n2024\n- 삼성전자, 갤럭시 S24 갤럭시 AI 소개 영상 (2024.02.06): https://youtu.be/EkzSq1NnJBY\n- OpenAI, Sora 샘플 영상 (2024.02.15 연구 공개): https://cdn.openai.com/sora/videos/tokyo-walk.mp4\n- OpenAI, Live demo of GPT-4o realtime translation (2024.05.13): https://youtu.be/c2DFg53Zhvw\n- Google, NotebookLM 오디오 개요 발표와 샘플 오디오: https://blog.google/innovation-and-ai/products/notebooklm-audio-overviews/\n- Anthropic, Claude 3.5 모델과 컴퓨터 유즈 (2024.10.22): https://www.anthropic.com/news/3-5-models-and-computer-use\n- Anthropic, Computer use for automating operations: https://youtu.be/ODaHJzOyVCQ\n\n2025\n- OpenAI, Operator 발표 (2025.01.23): https://openai.com/index/introducing-operator/\n- OpenAI, Introduction to Operator & Agents: https://youtu.be/CSE77wAdDLg\n- OpenAI, deep research 발표 (2025.02.02): https://openai.com/index/introducing-deep-research/\n- OpenAI, deep research in practice: https://youtu.be/zm6F0vo2E64\n- Google, Introducing Veo 3: Old Sailor (2025.05.20): https://youtu.be/OW9q6SWTXt8\n- Google, Introducing Veo 3: A Wise Old Owl: https://youtu.be/Yqg0oUaofH0\n- OpenAI, ChatGPT agent 발표 (2025.07.17): https://openai.com/index/introducing-chatgpt-agent/\n- Made by Google, Nano Banana Image Generation and Editing in Gemini: https://youtu.be/uOVPdK5Fke4\n- 카카오, 카카오톡 ChatGPT (2025.10.31): https://youtu.be/4ntV5sSvZNU\n- 카카오, 이용자 수 발표: https://www.kakaocorp.com/page/detail/12107?lang=ENG\n\n2026\n- Anthropic, Introducing Cowork (2026.01.12): https://youtu.be/UAmKyyZ-b9E\n- Claude 릴리스 노트: https://support.claude.com/en/articles/12138966-release-notes\n- ByteDance Seed, Seedance 2.0 발표: https://seed.bytedance.com/en/blog/seedance-2-0-official-launch\n- BytePlus, Introducing Dreamina Seedance 2.0: https://youtu.be/l89woJ0jidw\n- Claude, Dispatch tasks to Claude Cowork from anywhere (2026.03.17): https://youtu.be/fVIV-L49eBs\n- Claude, Put Claude to work on your computer, from anywhere: https://youtu.be/N" <> ..., "duration" => 590, "filename" => "/downloads/윤자동/2026-10-13 편지 한 장 못 보내던 AI가 4년 만에 하는 일/편지 한 장 못 보내던 AI가 4년 만에 하는 일 [HQ8bmbvBCeI].mp4", "id" => "HQ8bmbvBCeI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=HQ8bmbvBCeI", "playlist_index" => 5, "timestamp" => 1791882021, "title" => "편지 한 장 못 보내던 AI가 4년 만에 하는 일", "upload_date" => "20261013"} 03:03:15.935 [debug] QUERY OK source="sources" db=0.1ms idle=1003.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:15.936 [debug] QUERY OK source="sources" db=0.1ms idle=1003.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" = ?) [4] 03:03:15.937 [debug] QUERY OK source="media_items" db=1.2ms idle=1002.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-13 09:00:21Z], 4] 03:03:15.940 [debug] QUERY OK source="media_items" db=1.9ms idle=1003.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o·노트북LM·베오 3)에서만 짧게 들려 드리고, 나머지는 소리를 껐습니다.\n\"지금 해 볼 것\"의 화면 그림은 누를 곳을 보여 드리기 위한 도식입니다. 무료 조건과 출처는 위 PDF에 있습니다.\n나레이션은 AI 복제 음성입니다. 썸네일은 AI로 만든 이미지이며, 로고는 영상에서 다루는 각 회사의 상표입니다. 배경음은 Mixkit 라이선스 음원입니다.\n\n▶ 공식 자료 (나온 순서)\n\n2022~2023\n- OpenAI, ChatGPT 공개 글 (2022.11.30, 웹 아카이브): https://web.archive.org/web/20221130211011/https://openai.com/blog/chatgpt/\n- OpenAI, GPT-4 발표 (2023.03.14): https://openai.com/index/gpt-4-research/\n- OpenAI, GPT-4 Developer Livestream: https://youtu.be/outcGtbnMuQ\n- Microsoft, Microsoft 365 Copilot 발표 (2023.03.16): https://blogs.microsoft.com/blog/2023/03/16/introducing-microsoft-365-copilot-your-copilot-for-work/\n- Adobe, 포토샵 생성형 채우기 발표 (2023.05.23): https://news.adobe.com/news/news-details/2023/adobe-unveils-future-of-creative-cloud-with-generative-ai-as-a-creative-co-pilot-in-photoshop\n- Adobe, Introducing Generative Fill: https://youtu.be/YGNiuuJflGI\n- Adobe Photoshop, Introduction to Generative Fill: https://youtu.be/Sp6K3qpVFO0\n- Runway, Gen-2 Now Available (2023.06.07): https://youtu.be/BpoOVEEDiFA\n- OpenAI, ChatGPT can now see, hear, and speak (2023.09.25): https://openai.com/index/chatgpt-can-now-see-hear-and-speak/\n- ElevenLabs, AI Dubbing Product Demo (2023.10.10): https://youtu.be/ulaLIx0GbnI\n- Google, The capabilities of multimodal AI | Gemini Demo (2023.12.06): https://youtu.be/UIZAiXYceBI\n\n2024\n- 삼성전자, 갤럭시 S24 갤럭시 AI 소개 영상 (2024.02.06): https://youtu.be/EkzSq1NnJBY\n- OpenAI, Sora 샘플 영상 (2024.02.15 연구 공개): https://cdn.openai.com/sora/videos/tokyo-walk.mp4\n- OpenAI, Live demo of GPT-4o realtime translation (2024.05.13): https://youtu.be/c2DFg53Zhvw\n- Google, NotebookLM 오디오 개요 발표와 샘플 오디오: https://blog.google/innovation-and-ai/products/notebooklm-audio-overviews/\n- Anthropic, Claude 3.5 모델과 컴퓨터 유즈 (2024.10.22): https://www.anthropic.com/news/3-5-models-and-computer-use\n- Anthropic, Computer use for automating operations: https://youtu.be/ODaHJzOyVCQ\n\n2025\n- OpenAI, Operator 발표 (2025.01.23): https://openai.com/index/introducing-operator/\n- OpenAI, Introduction to Operator & Agents: https://youtu.be/CSE77wAdDLg\n- OpenAI, deep research 발표 (2025.02.02): https://openai.com/index/introducing-deep-research/\n- OpenAI, deep research in practice: https://youtu.be/zm6F0vo2E64\n- Google, Introducing Veo 3: Old Sailor (2025.05.20): https://youtu.be/OW9q6SWTXt8\n- Google, Introducing Veo 3: A Wise Old Owl: https://youtu.be/Yqg0oUaofH0\n- OpenAI, ChatGPT agent 발표 (2025.07.17): https://openai.com/index/introducing-chatgpt-agent/\n- Made by Google, Nano Banana Image Generation and Editing in Gemini: https://youtu.be/uOVPdK5Fke4\n- 카카오, 카카오톡 ChatGPT (2025.10.31): https://youtu.be/4ntV5sSvZNU\n- 카카오, 이용자 수 발표: https://www.kakaocorp.com/page/detail/12107?lang=ENG\n\n2026\n- Anthropic, Introducing Cowork (2026.01.12): https://youtu.be/UAmKyyZ-b9E\n- Claude 릴리스 노트: https://support.claude.com/en/articles/12138966-release-notes\n- ByteDance Seed, Seedance 2.0 발표: https://seed.bytedance.com/en/blog/seedance-2-0-official-launch\n- BytePlus, Introducing Dreamina Seedance 2.0: https://youtu.be/l89woJ0jidw\n- Claude, Dispatch tasks to Claude Cowork from anywhere (2026.03.17): https://youtu.be/fVIV-L49eBs\n- Claude, Put Claude to work on your computer, from anywhere: https://youtu.be/N" <> ..., "편지 한 장 못 보내던 AI가 4년 만에 하는 일", "66eeb3b9-121b-4ca2-9b90-e827bed2de7c", false, 590, false, "HQ8bmbvBCeI", "https://www.youtube.com/watch?v=HQ8bmbvBCeI", 5, "/downloads/윤자동/2026-10-13 편지 한 장 못 보내던 AI가 4년 만에 하는 일/편지 한 장 못 보내던 AI가 4년 만에 하는 일 [HQ8bmbvBCeI].mp4", false, false, 4, [], 98, ~U[2026-10-13 09:00:21Z], ~U[2026-10-17 03:03:15Z], ~U[2026-10-17 03:03:15Z], "📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o· (truncated) 03:03:15.940 [debug] QUERY OK source="sources" db=0.1ms idle=81.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" = ?) [4] 03:03:15.940 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:03:15.941 [debug] QUERY OK source="media_items" db=0.1ms idle=4.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49837] 03:03:15.941 [debug] Current batch of media processed. Will check again in 1000ms 03:03:16.941 [debug] Current batch of media processed. Will check again in 1000ms 03:03:17.943 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "duration" => 590, "filename" => "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", "id" => "UXL0v0s6tGo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=UXL0v0s6tGo", "playlist_index" => 6, "timestamp" => 1791795602, "title" => "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", "upload_date" => "20261012"} 03:03:17.943 [debug] QUERY OK source="sources" db=0.1ms idle=954.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:17.944 [debug] QUERY OK source="sources" db=0.3ms idle=954.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" = ?) [4] 03:03:17.945 [debug] QUERY OK source="media_items" db=1.2ms idle=955.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-12 09:00:02Z], 4] 03:03:17.946 [debug] QUERY OK source="media_items" db=0.9ms idle=956.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", "d9d545f2-a0d6-4af6-b123-9dd7272602c7", false, 590, false, "UXL0v0s6tGo", "https://www.youtube.com/watch?v=UXL0v0s6tGo", 6, "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", false, false, 4, [], 98, ~U[2026-10-12 09:00:02Z], ~U[2026-10-17 03:03:17Z], ~U[2026-10-17 03:03:17Z], "\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", 590, false, "UXL0v0s6tGo", "https://www.youtube.com/watch?v=UXL0v0s6tGo", "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", false, 4, ~U[2026-10-12 09:00:02Z]] 03:03:17.947 [debug] QUERY OK source="sources" db=0.2ms idle=85.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" = ?) [4] 03:03:17.947 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:17.948 [debug] QUERY OK source="media_items" db=0.2ms idle=3.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49630] 03:03:17.948 [debug] Current batch of media processed. Will check again in 1000ms 03:03:18.949 [debug] Current batch of media processed. Will check again in 1000ms 03:03:19.505 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=eyiW3-h3Pfs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fd/a7/fda7f8d3d7a51c45ad9db6186e31e0e686a5d9ab0771068e0232fc7df5d43cfd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 03:03:19.522 [debug] Running yt-dlp command for action: download_thumbnail 03:03:19.565 [debug] QUERY OK source="settings" db=0.1ms idle=700.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:19.565 [debug] QUERY OK source="settings" db=0.2ms idle=576.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:19.566 [debug] QUERY OK source="settings" db=0.1ms idle=576.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:19.566 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=eyiW3-h3Pfs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50466/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c5/2e/c52ea2774922f9b88e56495ef4589da10b335de38c7c774407f869c4d6383df4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:19.950 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "duration" => 721, "filename" => "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", "id" => "d3ZeGZ5nHtI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", "playlist_index" => 7, "timestamp" => 1791709221, "title" => "카톡 답장 절반을 AI 직원한테 맡겼습니다", "upload_date" => "20261011"} 03:03:19.950 [debug] QUERY OK source="sources" db=0.3ms idle=961.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:19.951 [debug] QUERY OK source="sources" db=0.1ms idle=385.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" = ?) [4] 03:03:19.952 [debug] QUERY OK source="media_items" db=1.0ms idle=385.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-11 09:00:21Z], 4] 03:03:19.955 [debug] QUERY OK source="media_items" db=2.4ms idle=386.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "카톡 답장 절반을 AI 직원한테 맡겼습니다", "0f608f54-0710-44bd-a6ee-fce1377eaa2f", false, 721, false, "d3ZeGZ5nHtI", "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", 7, "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", false, false, 4, [], 98, ~U[2026-10-11 09:00:21Z], ~U[2026-10-17 03:03:19Z], ~U[2026-10-17 03:03:19Z], "제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "카톡 답장 절반을 AI 직원한테 맡겼습니다", 721, false, "d3ZeGZ5nHtI", "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", false, 4, ~U[2026-10-11 09:00:21Z]] 03:03:19.955 [debug] QUERY OK source="sources" db=0.3ms idle=89.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" = ?) [4] 03:03:19.956 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:19.956 [debug] QUERY OK source="media_items" db=0.1ms idle=5.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 [49424] 03:03:19.956 [debug] Current batch of media processed. Will check again in 1000ms 03:03:20.957 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "duration" => 701, "filename" => "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", "id" => "dQRsSM_ctFo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=dQRsSM_ctFo", "playlist_index" => 8, "timestamp" => 1791536400, "title" => "윤자동 신입사원 체험기 | SK일렉링크", "upload_date" => "20261009"} 03:03:20.957 [debug] QUERY OK source="sources" db=0.2ms idle=1002.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:20.957 [debug] QUERY OK source="sources" db=0.0ms idle=1002.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" = ?) [4] 03:03:20.959 [debug] QUERY OK source="media_items" db=1.0ms idle=1001.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 09:00:00Z], 4] 03:03:20.998 [debug] QUERY OK source="media_items" db=38.7ms idle=1002.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "윤자동 신입사원 체험기 | SK일렉링크", "bd82b5e1-b867-4e26-a60c-329ebce501d3", false, 701, false, "dQRsSM_ctFo", "https://www.youtube.com/watch?v=dQRsSM_ctFo", 8, "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", false, false, 4, [], 98, ~U[2026-10-09 09:00:00Z], ~U[2026-10-17 03:03:20Z], ~U[2026-10-17 03:03:20Z], "입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "윤자동 신입사원 체험기 | SK일렉링크", 701, false, "dQRsSM_ctFo", "https://www.youtube.com/watch?v=dQRsSM_ctFo", "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", false, 4, ~U[2026-10-09 09:00:00Z]] 03:03:20.998 [debug] QUERY OK source="sources" db=0.1ms idle=131.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" = ?) [4] 03:03:20.998 [debug] QUERY OK source="media_profiles" db=0.1ms idle=41.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] 03:03:20.999 [debug] QUERY OK source="media_items" db=0.1ms idle=41.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 [49006] 03:03:20.999 [debug] Current batch of media processed. Will check again in 1000ms 03:03:21.999 [debug] Current batch of media processed. Will check again in 1000ms 03:03:22.149 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=eyiW3-h3Pfs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50466/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c5/2e/c52ea2774922f9b88e56495ef4589da10b335de38c7c774407f869c4d6383df4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:03:22.150 [debug] QUERY OK db=0.1ms idle=1151.7ms begin [] 03:03:22.151 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_filepath" = ?, "media_downloaded_at" = ?, "metadata_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", ~U[2026-10-17 03:03:19Z], "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].info.json", [["ko", "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].ko.srt"]], "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs]-thumb.jpg", ~U[2026-10-17 03:03:22Z], 50466] 03:03:22.151 [debug] QUERY OK source="media_metadata" db=0.3ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/50466/metadata.json.gz", "/config/metadata/media_items/50466/thumbnail.jpg", 50466, ~U[2026-10-17 03:03:22Z], ~U[2026-10-17 03:03:22Z]] 03:03:22.151 [debug] QUERY OK db=0.1ms commit [] 03:03:22.152 [debug] QUERY OK source="media_items" db=0.7ms idle=1153.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [68111789, ~U[2026-10-17 03:03:22Z], 50466] 03:03:22.152 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:22.153 [info] {"args":{"id":50466},"id":16327,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":13236625,"event":"job:stop","queue_time":915869,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:22.159 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792206202159520675,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:22.160 [debug] QUERY OK source="media_items" db=0.2ms idle=290.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" = ?) [5378] 03:03:22.160 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:22.160 [debug] QUERY OK source="sources" db=0.1ms idle=8.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" = ?) [3] 03:03:22.160 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.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] 03:03:22.161 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [5378] 03:03:22.267 [debug] QUERY OK source="media_metadata" db=0.1ms idle=108.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" = ?) [5378] 03:03:22.268 [debug] QUERY OK source="media_profiles" db=0.1ms idle=107.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] 03:03:22.268 [debug] QUERY OK source="settings" db=0.0ms idle=108.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:22.268 [debug] QUERY OK source="settings" db=0.0ms idle=107.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:22.268 [debug] Running yt-dlp command for action: get_downloadable_status 03:03:22.305 [debug] QUERY OK source="settings" db=0.1ms idle=144.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:22.305 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:22.305 [debug] QUERY OK source="settings" db=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 [] 03:03:22.305 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5a/4e/5a4e6b349058e19dc5092a3ed82c112198d3fa591e4c0736045baa9ae3525a0b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:23.001 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "duration" => 388, "filename" => "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", "id" => "DgpGMlighhg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=DgpGMlighhg", "playlist_index" => 9, "timestamp" => 1791448912, "title" => "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", "upload_date" => "20261008"} 03:03:23.001 [debug] QUERY OK source="sources" db=0.1ms idle=732.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:23.002 [debug] QUERY OK source="sources" db=0.2ms idle=696.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" = ?) [4] 03:03:23.003 [debug] QUERY OK source="media_items" db=0.9ms idle=696.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-08 08:41:52Z], 4] 03:03:23.004 [debug] QUERY OK source="media_items" db=1.2ms idle=697.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", "aa0284d2-f8c7-4636-82d7-5ef32bb21580", false, 388, false, "DgpGMlighhg", "https://www.youtube.com/watch?v=DgpGMlighhg", 9, "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", false, false, 4, [], 98, ~U[2026-10-08 08:41:52Z], ~U[2026-10-17 03:03:23Z], ~U[2026-10-17 03:03:23Z], "AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", 388, false, "DgpGMlighhg", "https://www.youtube.com/watch?v=DgpGMlighhg", "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", false, 4, ~U[2026-10-08 08:41:52Z]] 03:03:23.005 [debug] QUERY OK source="sources" db=0.2ms idle=133.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" = ?) [4] 03:03:23.005 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:23.006 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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 [48798] 03:03:23.006 [debug] Current batch of media processed. Will check again in 1000ms 03:03:23.701 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5a/4e/5a4e6b349058e19dc5092a3ed82c112198d3fa591e4c0736045baa9ae3525a0b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:03:23.701 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:03:23.702 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1542031,"event":"job:exception","queue_time":1011416,"attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:23.708 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792206203708776471,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:23.709 [debug] QUERY OK source="media_items" db=0.1ms idle=703.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" = ?) [13717] 03:03:23.709 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:23.709 [debug] QUERY OK source="sources" db=0.1ms idle=704.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:03:23.710 [debug] QUERY OK source="media_profiles" db=0.2ms idle=703.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] 03:03:23.710 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [13717] 03:03:23.802 [debug] QUERY OK source="media_metadata" db=0.1ms idle=93.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [13717] 03:03:23.803 [debug] QUERY OK source="media_profiles" db=0.0ms idle=93.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] 03:03:23.803 [debug] QUERY OK source="settings" db=0.0ms idle=93.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:23.803 [debug] QUERY OK source="settings" db=0.0ms idle=93.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:23.803 [debug] Running yt-dlp command for action: get_downloadable_status 03:03:24.007 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "duration" => 847, "filename" => "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", "id" => "KubQ-pNB1IQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=KubQ-pNB1IQ", "playlist_index" => 10, "timestamp" => 1791363636, "title" => "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", "upload_date" => "20261007"} 03:03:24.007 [debug] QUERY OK source="sources" db=0.2ms idle=204.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:24.008 [debug] QUERY OK source="sources" db=0.1ms idle=204.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" = ?) [4] 03:03:24.009 [debug] QUERY OK source="media_items" db=1.1ms idle=204.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 09:00:36Z], 4] 03:03:24.010 [debug] QUERY OK source="media_items" db=0.7ms idle=206.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", "3da64001-e0c7-4b90-81b1-e30784c0b80c", false, 847, false, "KubQ-pNB1IQ", "https://www.youtube.com/watch?v=KubQ-pNB1IQ", 10, "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", false, false, 4, [], 98, ~U[2026-10-07 09:00:36Z], ~U[2026-10-17 03:03:24Z], ~U[2026-10-17 03:03:24Z], "7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", 847, false, "KubQ-pNB1IQ", "https://www.youtube.com/watch?v=KubQ-pNB1IQ", "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", false, 4, ~U[2026-10-07 09:00:36Z]] 03:03:24.010 [debug] QUERY OK source="sources" db=0.1ms idle=137.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" = ?) [4] 03:03:24.011 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:03:24.011 [debug] QUERY OK source="media_items" db=0.4ms idle=3.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 [48592] 03:03:24.011 [debug] Current batch of media processed. Will check again in 1000ms 03:03:24.105 [debug] QUERY OK source="settings" db=0.3ms idle=95.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:24.105 [debug] QUERY OK source="settings" db=0.1ms idle=94.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:24.105 [debug] QUERY OK source="settings" db=0.1ms idle=94.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:24.105 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/49/1d/491d0bde171ec5e94151a10ff87bc7d9e85d61078ca769229148e3416d71d6be.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:25.012 [debug] Current batch of media processed. Will check again in 1000ms 03:03:25.525 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/49/1d/491d0bde171ec5e94151a10ff87bc7d9e85d61078ca769229148e3416d71d6be.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:03:25.526 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:03:25.526 [debug] QUERY OK source="media_items" db=0.4ms idle=1514.6ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n", ~U[2026-10-17 03:03:25Z], 13717] 03:03:25.527 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1818261,"event":"job:exception","queue_time":1803091,"attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:25.533 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792206205533734489,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:25.534 [debug] QUERY OK source="media_items" db=0.2ms idle=1428.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" = ?) [37712] 03:03:25.534 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:25.534 [debug] QUERY OK source="sources" db=0.1ms idle=659.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:03:25.535 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:25.535 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [37712] 03:03:25.536 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [37712] 03:03:25.536 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:25.536 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:25.536 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:25.536 [debug] Running yt-dlp command for action: get_downloadable_status 03:03:25.537 [debug] QUERY OK source="settings" db=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 [] 03:03:25.537 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:25.537 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:25.537 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/f3/b1f3d9c537c78c8cdfbdddbf646c6a12ffbb3b802a7e33814b4f8957b2c3533d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:26.014 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "duration" => 986, "filename" => "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", "id" => "gFzWJSUdjFY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gFzWJSUdjFY", "playlist_index" => 11, "timestamp" => 1791277209, "title" => "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", "upload_date" => "20261006"} 03:03:26.014 [debug] QUERY OK source="sources" db=0.3ms idle=477.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:26.015 [debug] QUERY OK source="sources" db=0.1ms idle=477.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" = ?) [4] 03:03:26.016 [debug] QUERY OK source="media_items" db=1.1ms idle=477.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 09:00:09Z], 4] 03:03:26.017 [debug] QUERY OK source="media_items" db=0.7ms idle=479.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", "3b2e4357-c053-4a19-b750-326c766ab300", false, 986, false, "gFzWJSUdjFY", "https://www.youtube.com/watch?v=gFzWJSUdjFY", 11, "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", false, false, 4, [], 98, ~U[2026-10-06 09:00:09Z], ~U[2026-10-17 03:03:26Z], ~U[2026-10-17 03:03:26Z], "케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", 986, false, "gFzWJSUdjFY", "https://www.youtube.com/watch?v=gFzWJSUdjFY", "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", false, 4, ~U[2026-10-06 09:00:09Z]] 03:03:26.018 [debug] QUERY OK source="sources" db=0.2ms idle=142.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" = ?) [4] 03:03:26.019 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:26.019 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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 [48384] 03:03:26.019 [debug] Current batch of media processed. Will check again in 1000ms 03:03:27.019 [debug] Current batch of media processed. Will check again in 1000ms 03:03:27.380 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/f3/b1f3d9c537c78c8cdfbdddbf646c6a12ffbb3b802a7e33814b4f8957b2c3533d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:03:27.380 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:03:27.381 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1846881,"event":"job:exception","queue_time":2929707,"attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:27.387 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792206207387555704,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:27.388 [debug] QUERY OK source="media_items" db=0.2ms idle=1368.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" = ?) [13649] 03:03:27.388 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:27.388 [debug] QUERY OK source="sources" db=0.1ms idle=1369.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:03:27.389 [debug] QUERY OK source="media_profiles" db=0.1ms idle=510.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] 03:03:27.389 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [13649] 03:03:27.390 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.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" = ?) [13649] 03:03:27.390 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:27.390 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:27.390 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:27.390 [debug] Running yt-dlp command for action: get_downloadable_status 03:03:27.391 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:27.391 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:27.391 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:27.391 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/36/9c/369cbcfdc73593f1b73e214b6248e1adb3018de0e6d80aca72c08ae2cc42966f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:28.021 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약과 답장 초안을 만듭니다.\n6. JEV테스트 라벨에 광고와 문의 메일을 각각 넣어 판정 기록과 Telegram 알림을 대조했습니다. 이번 작업 범위는 읽기·분류·초안 생성입니다.\n\n복사용 요청문 1 · 지난 메일 다시 읽기\n최근 1년 받은 메일을 JEV로 한 통씩 판정해 줘. 시작 전에 예상 비용과 외부 API로 전송되는 내용을 알려 줘. 질문은 대량 발송·자동 알림·구체적 요청·매출 기회·진행 중 거래·필요한 행동·무시 가능 여부·처리 경로로 나눠 줘. 답장 점수가 높은 메일을 보낸편지함과 대조하고, 다시 확인할 의뢰를 날짜·제목·보낸 사람으로 뽑아 줘. 원본은 읽기 전용으로 다루고 결과 목록을 별도 파일에 저장해 줘.\n\n복사용 요청문 2 · 앞으로 오는 메일\n먼저 테스트 라벨을 대상으로 만들어 줘. 주기 실행 작업의 앞단 스크립트가 Gmail을 읽고 JEV 플러그인의 API 클라이언트로 판정하게 해 줘. 확인할 메일이 있을 때 Hermes를 호출해 요약·답장 초안을 내 Telegram으로 보내 줘. 보안 단어·애매한 판정·API 오류는 사람이 확인하도록 알려 줘. 광고와 뉴스레터는 별도 분류하고 저녁에 목록을 보여 줘. 원본은 읽기 전용, 답장은 초안 생성까지로 범위를 정해 줘. 필요한 권한과 비용을 먼저 알려 주고 광고 1통·문의 1통으로 검증해 줘.\n\n실측과 계산 기준\n- 1년치: 2026-09-29, 11,370통, 입력 17,442,153토큰, 10개 병렬, 약 19분. JEV 판정 사용료를 원화로 환산·반올림하면 약 1,000원\n- 약 1,000원은 JEV의 메일 판정 사용료에 해당합니다. 원화 금액은 설명용 환산값입니다.\n- 코덱스 44시간: 기존 한 통 중앙값 14초 × 11,370통으로 계산한 예상 시간\n- 53%: JEV가 무시 항목으로 분류한 비율\n- 실제 답장한 외부 메일 876통과 대조했을 때, 36통이 무시 항목으로 분류됨\n- Hermes 배포: 이 서버에서 약 3분 30초\n- 광고 메일: Hermes 혼자 7.4초·12,770토큰 / JEV 먼저 0.6초·Hermes 0토큰. JEV 입력 약 1,000토큰의 판정 사용료 발생\n- 문의 메일: Hermes 혼자 11.8초·13,014토큰 / JEV 먼저 12.5초·13,017토큰\n- 별도 메일 비서 운영에서 68통을 점검했고 35%를 JEV 단계에서 처리\n- 맥 자동화 프로세스를 중지한 뒤 VPS의 Telegram 알림 수신 확인\n- 시연에는 가상 발신자의 테스트 메일 사용\n\n#JEV #제브 #AI자동화 #메일자동화 #헤르메스 #Hostinger", "duration" => 693, "filename" => "/downloads/윤자동/2026-10-05 JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계/JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계 [f0zt411z2yQ].mp4", "id" => "f0zt411z2yQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=f0zt411z2yQ", "playlist_index" => 12, "timestamp" => 1791190811, "title" => "JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계", "upload_date" => "20261005"} 03:03:28.022 [debug] QUERY OK source="sources" db=0.3ms idle=631.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:28.022 [debug] QUERY OK source="sources" db=0.1ms idle=631.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" = ?) [4] 03:03:28.024 [debug] QUERY OK source="media_items" db=1.3ms idle=631.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 09:00:11Z], 4] 03:03:28.026 [debug] QUERY OK source="media_items" db=1.7ms idle=632.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약과 답장 초안을 만듭니다.\n6. JEV테스트 라벨에 광고와 문의 메일을 각각 넣어 판정 기록과 Telegram 알림을 대조했습니다. 이번 작업 범위는 읽기·분류·초안 생성입니다.\n\n복사용 요청문 1 · 지난 메일 다시 읽기\n최근 1년 받은 메일을 JEV로 한 통씩 판정해 줘. 시작 전에 예상 비용과 외부 API로 전송되는 내용을 알려 줘. 질문은 대량 발송·자동 알림·구체적 요청·매출 기회·진행 중 거래·필요한 행동·무시 가능 여부·처리 경로로 나눠 줘. 답장 점수가 높은 메일을 보낸편지함과 대조하고, 다시 확인할 의뢰를 날짜·제목·보낸 사람으로 뽑아 줘. 원본은 읽기 전용으로 다루고 결과 목록을 별도 파일에 저장해 줘.\n\n복사용 요청문 2 · 앞으로 오는 메일\n먼저 테스트 라벨을 대상으로 만들어 줘. 주기 실행 작업의 앞단 스크립트가 Gmail을 읽고 JEV 플러그인의 API 클라이언트로 판정하게 해 줘. 확인할 메일이 있을 때 Hermes를 호출해 요약·답장 초안을 내 Telegram으로 보내 줘. 보안 단어·애매한 판정·API 오류는 사람이 확인하도록 알려 줘. 광고와 뉴스레터는 별도 분류하고 저녁에 목록을 보여 줘. 원본은 읽기 전용, 답장은 초안 생성까지로 범위를 정해 줘. 필요한 권한과 비용을 먼저 알려 주고 광고 1통·문의 1통으로 검증해 줘.\n\n실측과 계산 기준\n- 1년치: 2026-09-29, 11,370통, 입력 17,442,153토큰, 10개 병렬, 약 19분. JEV 판정 사용료를 원화로 환산·반올림하면 약 1,000원\n- 약 1,000원은 JEV의 메일 판정 사용료에 해당합니다. 원화 금액은 설명용 환산값입니다.\n- 코덱스 44시간: 기존 한 통 중앙값 14초 × 11,370통으로 계산한 예상 시간\n- 53%: JEV가 무시 항목으로 분류한 비율\n- 실제 답장한 외부 메일 876통과 대조했을 때, 36통이 무시 항목으로 분류됨\n- Hermes 배포: 이 서버에서 약 3분 30초\n- 광고 메일: Hermes 혼자 7.4초·12,770토큰 / JEV 먼저 0.6초·Hermes 0토큰. JEV 입력 약 1,000토큰의 판정 사용료 발생\n- 문의 메일: Hermes 혼자 11.8초·13,014토큰 / JEV 먼저 12.5초·13,017토큰\n- 별도 메일 비서 운영에서 68통을 점검했고 35%를 JEV 단계에서 처리\n- 맥 자동화 프로세스를 중지한 뒤 VPS의 Telegram 알림 수신 확인\n- 시연에는 가상 발신자의 테스트 메일 사용\n\n#JEV #제브 #AI자동화 #메일자동화 #헤르메스 #Hostinger", "JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계", "3f7336e1-cd62-42c7-8e6d-ee1a40b1e39e", false, 693, false, "f0zt411z2yQ", "https://www.youtube.com/watch?v=f0zt411z2yQ", 12, "/downloads/윤자동/2026-10-05 JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계/JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계 [f0zt411z2yQ].mp4", false, false, 4, [], 98, ~U[2026-10-05 09:00:11Z], ~U[2026-10-17 03:03:28Z], ~U[2026-10-17 03:03:28Z], "이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약 (truncated) 03:03:28.027 [debug] QUERY OK source="sources" db=0.3ms idle=146.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" = ?) [4] 03:03:28.027 [debug] QUERY OK source="media_profiles" db=0.0ms idle=4.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:28.027 [debug] QUERY OK source="media_items" db=0.1ms idle=4.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48178] 03:03:28.027 [debug] Current batch of media processed. Will check again in 1000ms 03:03:28.808 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/36/9c/369cbcfdc73593f1b73e214b6248e1adb3018de0e6d80aca72c08ae2cc42966f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:03:28.808 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:03:28.809 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1421145,"event":"job:exception","queue_time":4104119,"attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:28.815 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792206208815659491,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:28.816 [debug] QUERY OK source="media_items" db=0.3ms idle=788.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" = ?) [1922] 03:03:28.816 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:28.816 [debug] QUERY OK source="sources" db=0.1ms idle=789.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:03:28.817 [debug] QUERY OK source="media_profiles" db=0.1ms idle=789.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] 03:03:28.817 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [1922] 03:03:28.866 [debug] QUERY OK source="media_metadata" db=0.1ms idle=50.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" = ?) [1922] 03:03:28.866 [debug] QUERY OK source="media_profiles" db=0.1ms idle=49.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] 03:03:28.866 [debug] QUERY OK source="settings" db=0.1ms idle=49.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:28.866 [debug] QUERY OK source="settings" db=0.1ms idle=49.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:28.867 [debug] Running yt-dlp command for action: get_downloadable_status 03:03:28.867 [debug] QUERY OK source="settings" db=0.0ms idle=50.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:28.867 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:28.867 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:28.867 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/69/1f/691ffb9662cce115ea02934999b84aeeeb823c8852db7983d10c82f6edf04165.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:29.029 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "duration" => 1073, "filename" => "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", "id" => "9qwO1IzMc0Q", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=9qwO1IzMc0Q", "playlist_index" => 13, "timestamp" => 1791104438, "title" => "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", "upload_date" => "20261004"} 03:03:29.029 [debug] QUERY OK source="sources" db=0.3ms idle=162.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:29.030 [debug] QUERY OK source="sources" db=0.0ms idle=162.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" = ?) [4] 03:03:29.031 [debug] QUERY OK source="media_items" db=0.9ms idle=162.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 09:00:38Z], 4] 03:03:29.032 [debug] QUERY OK source="media_items" db=0.7ms idle=163.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", "bee4873f-c576-4d1f-9d3f-78c15f0d7716", false, 1073, false, "9qwO1IzMc0Q", "https://www.youtube.com/watch?v=9qwO1IzMc0Q", 13, "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", false, false, 4, [], 98, ~U[2026-10-04 09:00:38Z], ~U[2026-10-17 03:03:29Z], ~U[2026-10-17 03:03:29Z], "라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", 1073, false, "9qwO1IzMc0Q", "https://www.youtube.com/watch?v=9qwO1IzMc0Q", "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", false, 4, ~U[2026-10-04 09:00:38Z]] 03:03:29.032 [debug] QUERY OK source="sources" db=0.1ms idle=150.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" = ?) [4] 03:03:29.032 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:29.033 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [47974] 03:03:29.033 [debug] Current batch of media processed. Will check again in 1000ms 03:03:30.033 [debug] Current batch of media processed. Will check again in 1000ms 03:03:30.751 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/69/1f/691ffb9662cce115ea02934999b84aeeeb823c8852db7983d10c82f6edf04165.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:03:30.751 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:03:30.752 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1936315,"event":"job:exception","queue_time":5204185,"attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:03:31.035 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "duration" => 537, "filename" => "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", "id" => "tc314_9zH_s", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=tc314_9zH_s", "playlist_index" => 14, "timestamp" => 1791018000, "title" => "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", "upload_date" => "20261003"} 03:03:31.035 [debug] QUERY OK source="sources" db=0.1ms idle=282.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:31.036 [debug] QUERY OK source="sources" db=0.1ms idle=277.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" = ?) [4] 03:03:31.037 [debug] QUERY OK source="media_items" db=0.9ms idle=151.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 09:00:00Z], 4] 03:03:31.038 [debug] QUERY OK source="media_items" db=0.7ms idle=48.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", "d74b76b0-95c2-444a-b233-5d9228e4ac50", false, 537, false, "tc314_9zH_s", "https://www.youtube.com/watch?v=tc314_9zH_s", 14, "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", false, false, 4, [], 97, ~U[2026-10-03 09:00:00Z], ~U[2026-10-17 03:03:31Z], ~U[2026-10-17 03:03:31Z], "이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", 537, false, "tc314_9zH_s", "https://www.youtube.com/watch?v=tc314_9zH_s", "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", false, 4, ~U[2026-10-03 09:00:00Z]] 03:03:31.038 [debug] QUERY OK source="sources" db=0.1ms idle=49.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" = ?) [4] 03:03:31.038 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:31.039 [debug] QUERY OK source="media_items" db=0.3ms 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 [47766] 03:03:31.039 [debug] Current batch of media processed. Will check again in 1000ms 03:03:32.040 [debug] Current batch of media processed. Will check again in 1000ms 03:03:33.041 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "duration" => 538, "filename" => "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", "id" => "zFQNgZn9hKo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=zFQNgZn9hKo", "playlist_index" => 15, "timestamp" => 1790999261, "title" => "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", "upload_date" => "20261003"} 03:03:33.041 [debug] QUERY OK source="sources" db=0.1ms idle=153.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:33.042 [debug] QUERY OK source="sources" db=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:33.043 [debug] QUERY OK source="media_items" db=1.2ms idle=53.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 03:47:41Z], 4] 03:03:33.044 [debug] QUERY OK source="media_items" db=1.0ms idle=54.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", "e763bb2a-2e32-4af6-87fa-c00aa8bffa6f", false, 538, false, "zFQNgZn9hKo", "https://www.youtube.com/watch?v=zFQNgZn9hKo", 15, "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", false, false, 4, [], 97, ~U[2026-10-03 03:47:41Z], ~U[2026-10-17 03:03:33Z], ~U[2026-10-17 03:03:33Z], "로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", 538, false, "zFQNgZn9hKo", "https://www.youtube.com/watch?v=zFQNgZn9hKo", "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", false, 4, ~U[2026-10-03 03:47:41Z]] 03:03:33.045 [debug] QUERY OK source="sources" db=0.1ms idle=56.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" = ?) [4] 03:03:33.045 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:33.045 [debug] QUERY OK source="media_items" db=0.1ms idle=3.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47767] 03:03:33.045 [debug] Current batch of media processed. Will check again in 1000ms 03:03:34.027 [info] {"source":"oban","duration":1118,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:03:34.047 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "duration" => 507, "filename" => "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", "id" => "BFg_JcoGuX0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=BFg_JcoGuX0", "playlist_index" => 16, "timestamp" => 1790931647, "title" => "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", "upload_date" => "20261002"} 03:03:34.047 [debug] QUERY OK source="sources" db=0.2ms idle=1002.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:34.048 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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" = ?) [4] 03:03:34.049 [debug] QUERY OK source="media_items" db=0.9ms idle=1002.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-02 09:00:47Z], 4] 03:03:34.050 [debug] QUERY OK source="media_items" db=0.6ms idle=160.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", "63e39b98-127b-47f4-a3df-da63a44d421d", false, 507, false, "BFg_JcoGuX0", "https://www.youtube.com/watch?v=BFg_JcoGuX0", 16, "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", false, false, 4, [], 98, ~U[2026-10-02 09:00:47Z], ~U[2026-10-17 03:03:34Z], ~U[2026-10-17 03:03:34Z], "윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", 507, false, "BFg_JcoGuX0", "https://www.youtube.com/watch?v=BFg_JcoGuX0", "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", false, 4, ~U[2026-10-02 09:00:47Z]] 03:03:34.050 [debug] QUERY OK source="sources" db=0.1ms idle=23.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" = ?) [4] 03:03:34.050 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 03:03:34.050 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [47559] 03:03:34.051 [debug] Current batch of media processed. Will check again in 1000ms 03:03:35.051 [debug] Current batch of media processed. Will check again in 1000ms 03:03:36.053 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "duration" => 365, "filename" => "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", "id" => "xEV7i8WKdpc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xEV7i8WKdpc", "playlist_index" => 17, "timestamp" => 1790845227, "title" => "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", "upload_date" => "20261001"} 03:03:36.053 [debug] QUERY OK source="sources" db=0.1ms idle=162.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:36.053 [debug] QUERY OK source="sources" db=0.0ms idle=64.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" = ?) [4] 03:03:36.055 [debug] QUERY OK source="media_items" db=0.9ms idle=65.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-01 09:00:27Z], 4] 03:03:36.056 [debug] QUERY OK source="media_items" db=0.8ms idle=66.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", "56dfbe9c-ec58-4519-a31d-25db6403f99b", false, 365, false, "xEV7i8WKdpc", "https://www.youtube.com/watch?v=xEV7i8WKdpc", 17, "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", false, false, 4, [], 97, ~U[2026-10-01 09:00:27Z], ~U[2026-10-17 03:03:36Z], ~U[2026-10-17 03:03:36Z], "AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", 365, false, "xEV7i8WKdpc", "https://www.youtube.com/watch?v=xEV7i8WKdpc", "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", false, 4, ~U[2026-10-01 09:00:27Z]] 03:03:36.056 [debug] QUERY OK source="sources" db=0.1ms idle=67.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" = ?) [4] 03:03:36.056 [debug] QUERY OK source="media_profiles" db=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] 03:03:36.057 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [47350] 03:03:36.057 [debug] Current batch of media processed. Will check again in 1000ms 03:03:37.057 [debug] Current batch of media processed. Will check again in 1000ms 03:03:38.059 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "duration" => 570, "filename" => "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", "id" => "9wao057EuSA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=9wao057EuSA", "playlist_index" => 18, "timestamp" => 1790828952, "title" => "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", "upload_date" => "20261001"} 03:03:38.059 [debug] QUERY OK source="sources" db=0.1ms idle=165.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:38.059 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:38.060 [debug] QUERY OK source="media_items" db=0.8ms idle=71.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-01 04:29:12Z], 4] 03:03:38.061 [debug] QUERY OK source="media_items" db=0.6ms idle=72.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", "00e94ddf-9c71-4fe6-a182-420f4a4587e2", false, 570, false, "9wao057EuSA", "https://www.youtube.com/watch?v=9wao057EuSA", 18, "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", false, false, 4, [], 97, ~U[2026-10-01 04:29:12Z], ~U[2026-10-17 03:03:38Z], ~U[2026-10-17 03:03:38Z], "AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", 570, false, "9wao057EuSA", "https://www.youtube.com/watch?v=9wao057EuSA", "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", false, 4, ~U[2026-10-01 04:29:12Z]] 03:03:38.062 [debug] QUERY OK source="sources" db=0.1ms idle=73.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" = ?) [4] 03:03:38.062 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:38.062 [debug] QUERY OK source="media_items" db=0.1ms 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 [47351] 03:03:38.062 [debug] Current batch of media processed. Will check again in 1000ms 03:03:39.064 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "duration" => 351, "filename" => "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", "id" => "LXLXiFJmW5A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=LXLXiFJmW5A", "playlist_index" => 19, "timestamp" => 1790812496, "title" => "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", "upload_date" => "20260930"} 03:03:39.064 [debug] QUERY OK source="sources" db=0.2ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:39.065 [debug] QUERY OK source="sources" db=0.2ms idle=1002.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" = ?) [4] 03:03:39.066 [debug] QUERY OK source="media_items" db=1.0ms idle=1003.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-30 23:54:56Z], 4] 03:03:39.068 [debug] QUERY OK source="media_items" db=1.0ms idle=1004.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", "44f33009-b6dd-4b82-9b19-fc497b033845", false, 351, false, "LXLXiFJmW5A", "https://www.youtube.com/watch?v=LXLXiFJmW5A", 19, "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", false, false, 4, [], 96, ~U[2026-09-30 23:54:56Z], ~U[2026-10-17 03:03:39Z], ~U[2026-10-17 03:03:39Z], "제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", 351, false, "LXLXiFJmW5A", "https://www.youtube.com/watch?v=LXLXiFJmW5A", "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", false, 4, ~U[2026-09-30 23:54:56Z]] 03:03:39.068 [debug] QUERY OK source="sources" db=0.1ms idle=173.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" = ?) [4] 03:03:39.068 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:39.068 [debug] QUERY OK source="media_items" db=0.1ms 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 [47142] 03:03:39.069 [debug] Current batch of media processed. Will check again in 1000ms 03:03:40.069 [debug] Current batch of media processed. Will check again in 1000ms 03:03:41.071 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "메타가 준다는 AI 토큰 10억 개, 한국에서 진짜 공짜로 받을 수 있는지 제 맥북에서 직접 가입해 보며 영수증처럼 정산했습니다. 공식 발표로 확인된 것, 한국에서 멈춘 지점, 공짜라던 방법에 붙은 비용과 위험까지 담았습니다.\n\n가입 전 체크리스트\n· Muse 이용 대상: 미국(9/8 출시), 캐나다(9/18), 만 18세 이상\n· 초대 코드: 가입 후 48시간 안에 설정에서 입력, 양쪽 10억 토큰, 1인 최대 20명 (Muse 공식 계정 9/16 발표)\n· 무료 요금제: 매주 1억 토큰, 10억은 약 10주 치\n· 제미나이 스파크 조건: 만 18세 이상, 개인 구글 계정, 활동 기록 켜기, Google AI Pro(월 29,000원) 이상 구독. 회사(Workspace) 계정은 불가\n· 지역 제한을 돌아가는 방법은 메타 계정 제한 위험이 있습니다\n\n00:00 공짜 10억 토큰의 영수증\n00:38 Muse가 뭔데 10억을 주나요\n01:36 10억이면 얼마나 쓰나요\n02:08 한국에서 그냥 가입하면 되나요\n02:51 제미나이 스파크면 공짜인가요\n04:15 위험은 없나요\n04:54 그래서 저는 해야 하나요\n05:30 정리\n\n확인한 페이지: 메타 고객센터 \"Muse 구독 정보\", 구글 도움말 \"Gemini Spark\", Google One 요금(한국), muse.ai. 정보는 2026년 9월 26일 기준이며 바뀔 수 있습니다.\n영상 속 화면 녹화는 AI 에이전트가 제 맥북에서 진행했고, 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 Mixkit\n\n#메타 #Muse #뮤즈 #AI에이전트 #제미나이스파크 #초대코드 #AI무료", "duration" => 359, "filename" => "/downloads/윤자동/2026-09-30 메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)/메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크) [2X-lb7E9cBA].mp4", "id" => "2X-lb7E9cBA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=2X-lb7E9cBA", "playlist_index" => 20, "timestamp" => 1790758818, "title" => "메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)", "upload_date" => "20260930"} 03:03:41.071 [debug] QUERY OK source="sources" db=0.2ms idle=173.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:41.072 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:41.073 [debug] QUERY OK source="media_items" db=1.0ms idle=83.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-30 09:00:18Z], 4] 03:03:41.528 [debug] QUERY OK source="media_items" db=454.3ms idle=84.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["메타가 준다는 AI 토큰 10억 개, 한국에서 진짜 공짜로 받을 수 있는지 제 맥북에서 직접 가입해 보며 영수증처럼 정산했습니다. 공식 발표로 확인된 것, 한국에서 멈춘 지점, 공짜라던 방법에 붙은 비용과 위험까지 담았습니다.\n\n가입 전 체크리스트\n· Muse 이용 대상: 미국(9/8 출시), 캐나다(9/18), 만 18세 이상\n· 초대 코드: 가입 후 48시간 안에 설정에서 입력, 양쪽 10억 토큰, 1인 최대 20명 (Muse 공식 계정 9/16 발표)\n· 무료 요금제: 매주 1억 토큰, 10억은 약 10주 치\n· 제미나이 스파크 조건: 만 18세 이상, 개인 구글 계정, 활동 기록 켜기, Google AI Pro(월 29,000원) 이상 구독. 회사(Workspace) 계정은 불가\n· 지역 제한을 돌아가는 방법은 메타 계정 제한 위험이 있습니다\n\n00:00 공짜 10억 토큰의 영수증\n00:38 Muse가 뭔데 10억을 주나요\n01:36 10억이면 얼마나 쓰나요\n02:08 한국에서 그냥 가입하면 되나요\n02:51 제미나이 스파크면 공짜인가요\n04:15 위험은 없나요\n04:54 그래서 저는 해야 하나요\n05:30 정리\n\n확인한 페이지: 메타 고객센터 \"Muse 구독 정보\", 구글 도움말 \"Gemini Spark\", Google One 요금(한국), muse.ai. 정보는 2026년 9월 26일 기준이며 바뀔 수 있습니다.\n영상 속 화면 녹화는 AI 에이전트가 제 맥북에서 진행했고, 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 Mixkit\n\n#메타 #Muse #뮤즈 #AI에이전트 #제미나이스파크 #초대코드 #AI무료", "메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)", "f33d4005-abbe-485e-a8e4-90ac0f87b917", false, 359, false, "2X-lb7E9cBA", "https://www.youtube.com/watch?v=2X-lb7E9cBA", 20, "/downloads/윤자동/2026-09-30 메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)/메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크) [2X-lb7E9cBA].mp4", false, false, 4, [], 96, ~U[2026-09-30 09:00:18Z], ~U[2026-10-17 03:03:41Z], ~U[2026-10-17 03:03:41Z], "메타가 준다는 AI 토큰 10억 개, 한국에서 진짜 공짜로 받을 수 있는지 제 맥북에서 직접 가입해 보며 영수증처럼 정산했습니다. 공식 발표로 확인된 것, 한국에서 멈춘 지점, 공짜라던 방법에 붙은 비용과 위험까지 담았습니다.\n\n가입 전 체크리스트\n· Muse 이용 대상: 미국(9/8 출시), 캐나다(9/18), 만 18세 이상\n· 초대 코드: 가입 후 48시간 안에 설정에서 입력, 양쪽 10억 토큰, 1인 최대 20명 (Muse 공식 계정 9/16 발표)\n· 무료 요금제: 매주 1억 토큰, 10억은 약 10주 치\n· 제미나이 스파크 조건: 만 18세 이상, 개인 구글 계정, 활동 기록 켜기, Google AI Pro(월 29,000원) 이상 구독. 회사(Workspace) 계정은 불가\n· 지역 제한을 돌아가는 방법은 메타 계정 제한 위험이 있습니다\n\n00:00 공짜 10억 토큰의 영수증\n00:38 Muse가 뭔데 10억을 주나요\n01:36 10억이면 얼마나 쓰나요\n02:08 한국에서 그냥 가입하면 되나요\n02:51 제미나이 스파크면 공짜인가요\n04:15 위험은 없나요\n04:54 그래서 저는 해야 하나요\n05:30 정리\n\n확인한 페이지: 메타 고객센터 \"Muse 구독 정보\", 구글 도움말 \"Gemini Spark\", Google One 요금(한국), muse.ai. 정보는 2026년 9월 26일 기준이며 바뀔 수 있습니다.\n영상 속 화면 녹화는 AI 에이전트가 제 맥북에서 진행했고, 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 Mixkit\n\n#메타 #Muse #뮤즈 #AI에이전트 #제미나이스파크 #초대코드 #AI무료", "메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)", 359, false, "2X-lb7E9cBA", "https://www.youtube.com/watch?v=2X-lb7E9cBA", "/downloads/윤자동/2026-09-30 메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)/메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크) [2X-lb7E9cBA].mp4", false, 4, ~U[2026-09-30 09:00:18Z]] 03:03:41.528 [debug] QUERY OK source="sources" db=0.3ms idle=539.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" = ?) [4] 03:03:41.528 [debug] QUERY OK source="media_profiles" db=0.1ms idle=457.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] 03:03:41.529 [debug] QUERY OK source="media_items" db=0.1ms idle=456.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 [47143] 03:03:41.529 [debug] Current batch of media processed. Will check again in 1000ms 03:03:42.530 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "오늘 새벽 OpenAI 데브데이에서 발표가 20개 넘게 나왔습니다. 우리 일과 지갑에 바로 닿는 5가지를 골라 공식 발표 화면과 X·레딧·스레드 사용자 반응을 같이 정리했습니다.\n한국시간 2026년 9월 30일 기준이며, 기능별 제공 시점과 요금 조건은 계정·지역에 따라 다릅니다.\n\n0:00 인트로 · 반응이 갈린 발표\n0:44 1. Dots, 24시간 일하는 AI 비서\n1:30 2. GPT-6.1 Sol, Astra급 성능에 1/5 가격\n2:03 3. 챗GPT 스페이스·페이지스\n2:20 4. 코덱스 클라우드\n2:42 5. 챗GPT 로그인으로 구독 쓰기\n3:16 사용자 반응 · X·레딧·스레드\n4:22 요금제와 조건\n5:09 지금 할 일 3가지\n\n출처\n- OpenAI DevDay 2026 공식 키노트: https://www.youtube.com/watch?v=Fls_onRviPM\n- DevDay 2026 주요 발표: https://openai.com/index/devday-2026-recap/\n- Dots: https://openai.com/index/introducing-dots/\n- Dots 시작하기: https://help.openai.com/en/articles/20001530-getting-started-with-your-dot\n- GPT-6.1 Sol: https://openai.com/index/introducing-gpt-6-1-sol/\n- GPT-6.1 Sol API 단가: https://developers.openai.com/api/docs/models/gpt-6.1-sol\n- Pro 요금제: https://help.openai.com/en/articles/9793128-about-chatgpt-pro-tiers\n- 다른 앱에서 ChatGPT 요금제 쓰기: https://help.openai.com/en/articles/20001542-using-your-chatgpt-plan-in-other-apps-and-sites\n- X @theo: https://x.com/theo/status/2104995863689142546\n- X @SPAC89: https://x.com/SPAC89/status/2105003567455043610\n- X @kloss_xyz: https://x.com/kloss_xyz/status/2105007024475935140\n- Reddit r/codex: https://www.reddit.com/r/codex/comments/1wth66j/announcements_from_dev_day/\n- Threads @reality404studio: https://www.threads.com/@reality404studio/post/Dd41zTVkvdW\n- Threads @eddmpython: https://www.threads.com/@eddmpython/post/Dd43SwOEnvd\n- Threads @youngchangjo: https://www.threads.com/@youngchangjo/post/Dd45JxKkp_e\n\n제작 고지\n- 화면 조작·녹화: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 배경 삽화: AI 이미지 생성\n\n#OpenAI #DevDay2026 #Dots #GPT61Sol #코덱스 #챗GPT #AI에이전트 #윤자동", "duration" => 352, "filename" => "/downloads/윤자동/2026-09-30 자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지/자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지 [_p56kpCvCTU].mp4", "id" => "_p56kpCvCTU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_p56kpCvCTU", "playlist_index" => 21, "timestamp" => 1790733479, "title" => "자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지", "upload_date" => "20260930"} 03:03:42.530 [debug] QUERY OK source="sources" db=0.2ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:42.531 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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" = ?) [4] 03:03:42.532 [debug] QUERY OK source="media_items" db=0.9ms idle=1002.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-30 01:57:59Z], 4] 03:03:42.650 [debug] QUERY OK source="media_items" db=117.9ms idle=1003.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["오늘 새벽 OpenAI 데브데이에서 발표가 20개 넘게 나왔습니다. 우리 일과 지갑에 바로 닿는 5가지를 골라 공식 발표 화면과 X·레딧·스레드 사용자 반응을 같이 정리했습니다.\n한국시간 2026년 9월 30일 기준이며, 기능별 제공 시점과 요금 조건은 계정·지역에 따라 다릅니다.\n\n0:00 인트로 · 반응이 갈린 발표\n0:44 1. Dots, 24시간 일하는 AI 비서\n1:30 2. GPT-6.1 Sol, Astra급 성능에 1/5 가격\n2:03 3. 챗GPT 스페이스·페이지스\n2:20 4. 코덱스 클라우드\n2:42 5. 챗GPT 로그인으로 구독 쓰기\n3:16 사용자 반응 · X·레딧·스레드\n4:22 요금제와 조건\n5:09 지금 할 일 3가지\n\n출처\n- OpenAI DevDay 2026 공식 키노트: https://www.youtube.com/watch?v=Fls_onRviPM\n- DevDay 2026 주요 발표: https://openai.com/index/devday-2026-recap/\n- Dots: https://openai.com/index/introducing-dots/\n- Dots 시작하기: https://help.openai.com/en/articles/20001530-getting-started-with-your-dot\n- GPT-6.1 Sol: https://openai.com/index/introducing-gpt-6-1-sol/\n- GPT-6.1 Sol API 단가: https://developers.openai.com/api/docs/models/gpt-6.1-sol\n- Pro 요금제: https://help.openai.com/en/articles/9793128-about-chatgpt-pro-tiers\n- 다른 앱에서 ChatGPT 요금제 쓰기: https://help.openai.com/en/articles/20001542-using-your-chatgpt-plan-in-other-apps-and-sites\n- X @theo: https://x.com/theo/status/2104995863689142546\n- X @SPAC89: https://x.com/SPAC89/status/2105003567455043610\n- X @kloss_xyz: https://x.com/kloss_xyz/status/2105007024475935140\n- Reddit r/codex: https://www.reddit.com/r/codex/comments/1wth66j/announcements_from_dev_day/\n- Threads @reality404studio: https://www.threads.com/@reality404studio/post/Dd41zTVkvdW\n- Threads @eddmpython: https://www.threads.com/@eddmpython/post/Dd43SwOEnvd\n- Threads @youngchangjo: https://www.threads.com/@youngchangjo/post/Dd45JxKkp_e\n\n제작 고지\n- 화면 조작·녹화: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 배경 삽화: AI 이미지 생성\n\n#OpenAI #DevDay2026 #Dots #GPT61Sol #코덱스 #챗GPT #AI에이전트 #윤자동", "자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지", "301124c0-df1e-4dfd-abfc-78388be17a97", false, 352, false, "_p56kpCvCTU", "https://www.youtube.com/watch?v=_p56kpCvCTU", 21, "/downloads/윤자동/2026-09-30 자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지/자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지 [_p56kpCvCTU].mp4", false, false, 4, [], 96, ~U[2026-09-30 01:57:59Z], ~U[2026-10-17 03:03:42Z], ~U[2026-10-17 03:03:42Z], "오늘 새벽 OpenAI 데브데이에서 발표가 20개 넘게 나왔습니다. 우리 일과 지갑에 바로 닿는 5가지를 골라 공식 발표 화면과 X·레딧·스레드 사용자 반응을 같이 정리했습니다.\n한국시간 2026년 9월 30일 기준이며, 기능별 제공 시점과 요금 조건은 계정·지역에 따라 다릅니다.\n\n0:00 인트로 · 반응이 갈린 발표\n0:44 1. Dots, 24시간 일하는 AI 비서\n1:30 2. GPT-6.1 Sol, Astra급 성능에 1/5 가격\n2:03 3. 챗GPT 스페이스·페이지스\n2:20 4. 코덱스 클라우드\n2:42 5. 챗GPT 로그인으로 구독 쓰기\n3:16 사용자 반응 · X·레딧·스레드\n4:22 요금제와 조건\n5:09 지금 할 일 3가지\n\n출처\n- OpenAI DevDay 2026 공식 키노트: https://www.youtube.com/watch?v=Fls_onRviPM\n- DevDay 2026 주요 발표: https://openai.com/index/devday-2026-recap/\n- Dots: https://openai.com/index/introducing-dots/\n- Dots 시작하기: https://help.openai.com/en/articles/20001530-getting-started-with-your-dot\n- GPT-6.1 Sol: https://openai.com/index/introducing-gpt-6-1-sol/\n- GPT-6.1 Sol API 단가: https://developers.openai.com/api/docs/models/gpt-6.1-sol\n- Pro 요금제: https://help.openai.com/en/articles/9793128-about-chatgpt-pro-tiers\n- 다른 앱에서 ChatGPT 요금제 쓰기: https://help.openai.com/en/articles/20001542-using-your-chatgpt-plan-in-other-apps-and-sites\n- X @theo: https://x.com/theo/status/2104995863689142546\n- X @SPAC89: https://x.com/SPAC89/status/2105003567455043610\n- X @kloss_xyz: https://x.com/kloss_xyz/status/2105007024475935140\n- Reddit r/codex: https://www.reddit.com/r/codex/comments/1wth66j/announcements_from_dev_day/\n- Threads @reality404studio: https://www.threads.com/@reality404studio/post/Dd41zTVkvdW\n- Threads @eddmpython: https://www.threads.com/@eddmpython/post/Dd43SwOEnvd\n- Threads @youngchangjo: https://www.threads.com/@youngchangjo/post/Dd45JxKkp_e\n\n제작 고지\n- 화면 조작·녹화: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 배경 삽화: AI 이미지 생성\n\n#OpenAI #DevDay2026 #Dots #GPT61Sol #코덱스 #챗GPT #AI에이전트 #윤자동", "자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지", 352, false, "_p56kpCvCTU", "https://www.youtube.com/watch?v=_p56kpCvCTU", "/downloads/윤자동/2026-09-30 자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지/자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지 [_p56kpCvCTU].mp4", false, 4, ~U[2026-09-30 01:57:59Z]] 03:03:42.651 [debug] QUERY OK source="sources" db=0.5ms idle=752.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:42.651 [debug] QUERY OK source="media_profiles" db=0.2ms idle=120.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] 03:03:42.652 [debug] QUERY OK source="media_items" db=0.1ms idle=120.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 [46907] 03:03:42.652 [debug] Current batch of media processed. Will check again in 1000ms 03:03:43.767 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Sonnet 5.5가 반값에 Opus 5.5를 이겼다는 공식 표, 그리고 \"토큰 먹는 하마\"라는 후기. 누가 맞는지 같은 과제로 직접 경주시켜 봤습니다.\n공식 발표·제3자 측정·사용자 후기를 확인하고, 어떤 일에 어떤 설정을 켜면 되는지 정리했습니다.\n\n0:00 오프닝\n0:40 뭐가 달라졌길래 난리예요?\n1:24 진짜 오퍼스를 이겼어요?\n2:12 써 본 사람들은 뭐래요?\n3:14 직접 시키면 누가 이겨요?\n5:05 토큰 먹는 하마라던데요?\n6:11 그래서 저는 뭘 켜야 해요?\n\n출처\n- 앤트로픽 공식 발표(2026.09.28): https://www.anthropic.com/claude-sonnet-5-5\n- 공식 문서 모델 개요: https://platform.claude.com/docs/en/models/sonnet-5-5/overview\n- Artificial Analysis: https://artificialanalysis.ai/models/claude-sonnet-5-5\n- Vals.ai: https://www.vals.ai/models/anthropic_claude-sonnet-5-5\n- 공식 X 발표: https://x.com/claudeai/status/2104633115620823187\n\n측정 조건\n- 2026.09.29, 제 맥에서 직접 실행\n- claude.ai 찌르레기 경기: 노력 \"중간\", 모델별 1회\n- Claude Code 경주(Claude Code 2.1.284): 버그 5개·테스트 7개 과제, 중간 설정 5회·맥스 3회\n- 비용은 Claude Code가 계산한 API 요금 환산값(구독 사용량과 다름)\n\n제작 고지\n- 화면 조작: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 영상 속 삽화(로봇 경주·경기장·하마)는 AI 이미지 생성\n\n#Sonnet55 #클로드 #ClaudeCode #Opus55 #AI모델비교 #업무자동화 #윤자동", "duration" => 445, "filename" => "/downloads/윤자동/2026-09-29 반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다/반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다 [VXCKC_WEzxY].mp4", "id" => "VXCKC_WEzxY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=VXCKC_WEzxY", "playlist_index" => 22, "timestamp" => 1790696520, "title" => "반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다", "upload_date" => "20260929"} 03:03:43.768 [debug] QUERY OK source="sources" db=0.3ms idle=1117.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:43.768 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@yunjadong --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/54/bf/54bfa99bf49ace71649de2e04b83b1a4b5560afbe42dfad4c3aeab3f51900c01.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/12/ff/12ff2bdc76f0ee6599ed2c9c3181787af5581397b1e490e8af318b4a6c161adc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 03:03:43.769 [debug] QUERY OK source="sources" db=0.5ms idle=1117.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" = ?) [4] 03:03:43.770 [debug] QUERY OK source="sources" db=0.3ms idle=1118.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:43.771 [debug] QUERY OK source="sources" db=0.4ms idle=871.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" = ?) [4] 03:03:43.771 [debug] QUERY OK source="media_items" db=2.7ms queue=0.1ms idle=1117.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-29 15:42:00Z], 4] 03:03:43.773 [debug] QUERY OK source="media_items" db=1.5ms idle=3.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 09:00:24Z], 4] 03:03:43.773 [debug] QUERY OK source="media_items" db=1.2ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Sonnet 5.5가 반값에 Opus 5.5를 이겼다는 공식 표, 그리고 \"토큰 먹는 하마\"라는 후기. 누가 맞는지 같은 과제로 직접 경주시켜 봤습니다.\n공식 발표·제3자 측정·사용자 후기를 확인하고, 어떤 일에 어떤 설정을 켜면 되는지 정리했습니다.\n\n0:00 오프닝\n0:40 뭐가 달라졌길래 난리예요?\n1:24 진짜 오퍼스를 이겼어요?\n2:12 써 본 사람들은 뭐래요?\n3:14 직접 시키면 누가 이겨요?\n5:05 토큰 먹는 하마라던데요?\n6:11 그래서 저는 뭘 켜야 해요?\n\n출처\n- 앤트로픽 공식 발표(2026.09.28): https://www.anthropic.com/claude-sonnet-5-5\n- 공식 문서 모델 개요: https://platform.claude.com/docs/en/models/sonnet-5-5/overview\n- Artificial Analysis: https://artificialanalysis.ai/models/claude-sonnet-5-5\n- Vals.ai: https://www.vals.ai/models/anthropic_claude-sonnet-5-5\n- 공식 X 발표: https://x.com/claudeai/status/2104633115620823187\n\n측정 조건\n- 2026.09.29, 제 맥에서 직접 실행\n- claude.ai 찌르레기 경기: 노력 \"중간\", 모델별 1회\n- Claude Code 경주(Claude Code 2.1.284): 버그 5개·테스트 7개 과제, 중간 설정 5회·맥스 3회\n- 비용은 Claude Code가 계산한 API 요금 환산값(구독 사용량과 다름)\n\n제작 고지\n- 화면 조작: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 영상 속 삽화(로봇 경주·경기장·하마)는 AI 이미지 생성\n\n#Sonnet55 #클로드 #ClaudeCode #Opus55 #AI모델비교 #업무자동화 #윤자동", "반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다", "9f76b903-d863-4f94-b30d-4c22758fb596", false, 445, false, "VXCKC_WEzxY", "https://www.youtube.com/watch?v=VXCKC_WEzxY", 22, "/downloads/윤자동/2026-09-29 반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다/반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다 [VXCKC_WEzxY].mp4", false, false, 4, [], 97, ~U[2026-09-29 15:42:00Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "Sonnet 5.5가 반값에 Opus 5.5를 이겼다는 공식 표, 그리고 \"토큰 먹는 하마\"라는 후기. 누가 맞는지 같은 과제로 직접 경주시켜 봤습니다.\n공식 발표·제3자 측정·사용자 후기를 확인하고, 어떤 일에 어떤 설정을 켜면 되는지 정리했습니다.\n\n0:00 오프닝\n0:40 뭐가 달라졌길래 난리예요?\n1:24 진짜 오퍼스를 이겼어요?\n2:12 써 본 사람들은 뭐래요?\n3:14 직접 시키면 누가 이겨요?\n5:05 토큰 먹는 하마라던데요?\n6:11 그래서 저는 뭘 켜야 해요?\n\n출처\n- 앤트로픽 공식 발표(2026.09.28): https://www.anthropic.com/claude-sonnet-5-5\n- 공식 문서 모델 개요: https://platform.claude.com/docs/en/models/sonnet-5-5/overview\n- Artificial Analysis: https://artificialanalysis.ai/models/claude-sonnet-5-5\n- Vals.ai: https://www.vals.ai/models/anthropic_claude-sonnet-5-5\n- 공식 X 발표: https://x.com/claudeai/status/2104633115620823187\n\n측정 조건\n- 2026.09.29, 제 맥에서 직접 실행\n- claude.ai 찌르레기 경기: 노력 \"중간\", 모델별 1회\n- Claude Code 경주(Claude Code 2.1.284): 버그 5개·테스트 7개 과제, 중간 설정 5회·맥스 3회\n- 비용은 Claude Code가 계산한 API 요금 환산값(구독 사용량과 다름)\n\n제작 고지\n- 화면 조작: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 영상 속 삽화(로봇 경주·경기장·하마)는 AI 이미지 생성\n\n#Sonnet55 #클로드 #ClaudeCode #Opus55 #AI모델비교 #업무자동화 #윤자동", "반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다", 445, false, "VXCKC_WEzxY", "https://www.youtube.com/watch?v=VXCKC_WEzxY", "/downloads/윤자동/2026-09-29 반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다/반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다 [VXCKC_WEzxY].mp4", false, 4, ~U[2026-09-29 15:42:00Z]] 03:03:43.774 [debug] QUERY OK source="sources" db=0.3ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.774 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 03:03:43.775 [debug] QUERY OK source="media_items" db=1.3ms idle=2.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", "fd7f5123-9e5f-4344-b40d-f4dc77c6d4b7", false, 1146, false, "eyiW3-h3Pfs", "https://www.youtube.com/watch?v=eyiW3-h3Pfs", 1, "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", false, false, 4, [], 97, ~U[2026-10-16 09:00:24Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", 1146, false, "eyiW3-h3Pfs", "https://www.youtube.com/watch?v=eyiW3-h3Pfs", "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", false, 4, ~U[2026-10-16 09:00:24Z]] 03:03:43.775 [debug] QUERY OK source="media_items" db=0.3ms 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 [46927] 03:03:43.775 [debug] Gracefully stopping file follower 03:03:43.775 [debug] QUERY OK source="sources" db=0.2ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.776 [debug] QUERY OK source="media_items" db=0.8ms idle=1.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 08:21:09Z], 4] 03:03:43.779 [debug] QUERY OK source="media_items" db=1.9ms idle=2.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", "12146ab2-ed7a-4c41-8dae-d7686c466214", false, 1162, false, "3quu283_05I", "https://www.youtube.com/watch?v=3quu283_05I", 2, "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", false, false, 4, [], 97, ~U[2026-10-16 08:21:09Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", 1162, false, "3quu283_05I", "https://www.youtube.com/watch?v=3quu283_05I", "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", false, 4, ~U[2026-10-16 08:21:09Z]] 03:03:43.779 [debug] QUERY OK source="sources" db=0.2ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.780 [debug] QUERY OK source="media_items" db=0.9ms idle=4.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 09:00:28Z], 4] 03:03:43.782 [debug] QUERY OK source="media_items" db=1.2ms idle=5.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", "5424d7e7-d3a7-43b6-8e90-f5c0db79e66e", false, 1288, false, "2TUZxslkX2A", "https://www.youtube.com/watch?v=2TUZxslkX2A", 3, "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", false, false, 4, [], 98, ~U[2026-10-15 09:00:28Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", 1288, false, "2TUZxslkX2A", "https://www.youtube.com/watch?v=2TUZxslkX2A", "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", false, 4, ~U[2026-10-15 09:00:28Z]] 03:03:43.783 [debug] QUERY OK source="sources" db=0.3ms idle=5.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" = ?) [4] 03:03:43.784 [debug] QUERY OK source="media_items" db=1.2ms idle=4.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 09:00:07Z], 4] 03:03:43.785 [debug] QUERY OK source="media_items" db=0.9ms idle=5.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", "ea8fdefd-d21c-46e3-9587-641fc84d5029", false, 557, false, "wN3aDOyiZbA", "https://www.youtube.com/watch?v=wN3aDOyiZbA", 4, "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", false, false, 4, [], 98, ~U[2026-10-14 09:00:07Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", 557, false, "wN3aDOyiZbA", "https://www.youtube.com/watch?v=wN3aDOyiZbA", "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", false, 4, ~U[2026-10-14 09:00:07Z]] 03:03:43.786 [debug] QUERY OK source="sources" db=0.3ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.789 [debug] QUERY OK source="media_items" db=3.1ms idle=4.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-13 09:00:21Z], 4] 03:03:43.792 [debug] QUERY OK source="media_items" db=2.1ms idle=7.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o·노트북LM·베오 3)에서만 짧게 들려 드리고, 나머지는 소리를 껐습니다.\n\"지금 해 볼 것\"의 화면 그림은 누를 곳을 보여 드리기 위한 도식입니다. 무료 조건과 출처는 위 PDF에 있습니다.\n나레이션은 AI 복제 음성입니다. 썸네일은 AI로 만든 이미지이며, 로고는 영상에서 다루는 각 회사의 상표입니다. 배경음은 Mixkit 라이선스 음원입니다.\n\n▶ 공식 자료 (나온 순서)\n\n2022~2023\n- OpenAI, ChatGPT 공개 글 (2022.11.30, 웹 아카이브): https://web.archive.org/web/20221130211011/https://openai.com/blog/chatgpt/\n- OpenAI, GPT-4 발표 (2023.03.14): https://openai.com/index/gpt-4-research/\n- OpenAI, GPT-4 Developer Livestream: https://youtu.be/outcGtbnMuQ\n- Microsoft, Microsoft 365 Copilot 발표 (2023.03.16): https://blogs.microsoft.com/blog/2023/03/16/introducing-microsoft-365-copilot-your-copilot-for-work/\n- Adobe, 포토샵 생성형 채우기 발표 (2023.05.23): https://news.adobe.com/news/news-details/2023/adobe-unveils-future-of-creative-cloud-with-generative-ai-as-a-creative-co-pilot-in-photoshop\n- Adobe, Introducing Generative Fill: https://youtu.be/YGNiuuJflGI\n- Adobe Photoshop, Introduction to Generative Fill: https://youtu.be/Sp6K3qpVFO0\n- Runway, Gen-2 Now Available (2023.06.07): https://youtu.be/BpoOVEEDiFA\n- OpenAI, ChatGPT can now see, hear, and speak (2023.09.25): https://openai.com/index/chatgpt-can-now-see-hear-and-speak/\n- ElevenLabs, AI Dubbing Product Demo (2023.10.10): https://youtu.be/ulaLIx0GbnI\n- Google, The capabilities of multimodal AI | Gemini Demo (2023.12.06): https://youtu.be/UIZAiXYceBI\n\n2024\n- 삼성전자, 갤럭시 S24 갤럭시 AI 소개 영상 (2024.02.06): https://youtu.be/EkzSq1NnJBY\n- OpenAI, Sora 샘플 영상 (2024.02.15 연구 공개): https://cdn.openai.com/sora/videos/tokyo-walk.mp4\n- OpenAI, Live demo of GPT-4o realtime translation (2024.05.13): https://youtu.be/c2DFg53Zhvw\n- Google, NotebookLM 오디오 개요 발표와 샘플 오디오: https://blog.google/innovation-and-ai/products/notebooklm-audio-overviews/\n- Anthropic, Claude 3.5 모델과 컴퓨터 유즈 (2024.10.22): https://www.anthropic.com/news/3-5-models-and-computer-use\n- Anthropic, Computer use for automating operations: https://youtu.be/ODaHJzOyVCQ\n\n2025\n- OpenAI, Operator 발표 (2025.01.23): https://openai.com/index/introducing-operator/\n- OpenAI, Introduction to Operator & Agents: https://youtu.be/CSE77wAdDLg\n- OpenAI, deep research 발표 (2025.02.02): https://openai.com/index/introducing-deep-research/\n- OpenAI, deep research in practice: https://youtu.be/zm6F0vo2E64\n- Google, Introducing Veo 3: Old Sailor (2025.05.20): https://youtu.be/OW9q6SWTXt8\n- Google, Introducing Veo 3: A Wise Old Owl: https://youtu.be/Yqg0oUaofH0\n- OpenAI, ChatGPT agent 발표 (2025.07.17): https://openai.com/index/introducing-chatgpt-agent/\n- Made by Google, Nano Banana Image Generation and Editing in Gemini: https://youtu.be/uOVPdK5Fke4\n- 카카오, 카카오톡 ChatGPT (2025.10.31): https://youtu.be/4ntV5sSvZNU\n- 카카오, 이용자 수 발표: https://www.kakaocorp.com/page/detail/12107?lang=ENG\n\n2026\n- Anthropic, Introducing Cowork (2026.01.12): https://youtu.be/UAmKyyZ-b9E\n- Claude 릴리스 노트: https://support.claude.com/en/articles/12138966-release-notes\n- ByteDance Seed, Seedance 2.0 발표: https://seed.bytedance.com/en/blog/seedance-2-0-official-launch\n- BytePlus, Introducing Dreamina Seedance 2.0: https://youtu.be/l89woJ0jidw\n- Claude, Dispatch tasks to Claude Cowork from anywhere (2026.03.17): https://youtu.be/fVIV-L49eBs\n- Claude, Put Claude to work on your computer, from anywhere: https://youtu.be/N" <> ..., "편지 한 장 못 보내던 AI가 4년 만에 하는 일", "092adbf5-94b2-4f15-b8b7-705323508391", false, 590, false, "HQ8bmbvBCeI", "https://www.youtube.com/watch?v=HQ8bmbvBCeI", 5, "/downloads/윤자동/2026-10-13 편지 한 장 못 보내던 AI가 4년 만에 하는 일/편지 한 장 못 보내던 AI가 4년 만에 하는 일 [HQ8bmbvBCeI].mp4", false, false, 4, [], 98, ~U[2026-10-13 09:00:21Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o·노 (truncated) 03:03:43.793 [debug] QUERY OK source="sources" db=0.2ms idle=8.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" = ?) [4] 03:03:43.794 [debug] QUERY OK source="media_items" db=1.1ms idle=7.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-12 09:00:02Z], 4] 03:03:43.795 [debug] QUERY OK source="media_items" db=0.7ms idle=8.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", "217e492a-8908-4be4-9ced-c1db63b2a001", false, 590, false, "UXL0v0s6tGo", "https://www.youtube.com/watch?v=UXL0v0s6tGo", 6, "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", false, false, 4, [], 98, ~U[2026-10-12 09:00:02Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", 590, false, "UXL0v0s6tGo", "https://www.youtube.com/watch?v=UXL0v0s6tGo", "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", false, 4, ~U[2026-10-12 09:00:02Z]] 03:03:43.796 [debug] QUERY OK source="sources" db=0.2ms idle=6.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.797 [debug] QUERY OK source="media_items" db=1.1ms idle=4.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-11 09:00:21Z], 4] 03:03:43.799 [debug] QUERY OK source="media_items" db=0.9ms idle=4.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "카톡 답장 절반을 AI 직원한테 맡겼습니다", "4673a203-c7a6-4efb-af00-f87983d29303", false, 721, false, "d3ZeGZ5nHtI", "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", 7, "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", false, false, 4, [], 98, ~U[2026-10-11 09:00:21Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "카톡 답장 절반을 AI 직원한테 맡겼습니다", 721, false, "d3ZeGZ5nHtI", "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", false, 4, ~U[2026-10-11 09:00:21Z]] 03:03:43.799 [debug] QUERY OK source="sources" db=0.2ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.800 [debug] QUERY OK source="media_items" db=0.9ms idle=3.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 09:00:00Z], 4] 03:03:43.801 [debug] QUERY OK source="media_items" db=0.8ms idle=4.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "윤자동 신입사원 체험기 | SK일렉링크", "5c618568-cffe-4e15-89ac-3f0447418811", false, 701, false, "dQRsSM_ctFo", "https://www.youtube.com/watch?v=dQRsSM_ctFo", 8, "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", false, false, 4, [], 98, ~U[2026-10-09 09:00:00Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "윤자동 신입사원 체험기 | SK일렉링크", 701, false, "dQRsSM_ctFo", "https://www.youtube.com/watch?v=dQRsSM_ctFo", "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", false, 4, ~U[2026-10-09 09:00:00Z]] 03:03:43.802 [debug] QUERY OK source="sources" db=0.3ms idle=4.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.803 [debug] QUERY OK source="media_items" db=0.8ms idle=3.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-08 08:41:52Z], 4] 03:03:43.804 [debug] QUERY OK source="media_items" db=1.1ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", "98a90edd-a17a-4d12-ab50-6426fdadd1d7", false, 388, false, "DgpGMlighhg", "https://www.youtube.com/watch?v=DgpGMlighhg", 9, "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", false, false, 4, [], 98, ~U[2026-10-08 08:41:52Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", 388, false, "DgpGMlighhg", "https://www.youtube.com/watch?v=DgpGMlighhg", "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", false, 4, ~U[2026-10-08 08:41:52Z]] 03:03:43.805 [debug] QUERY OK source="sources" db=0.2ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.806 [debug] QUERY OK source="media_items" db=1.1ms idle=3.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 09:00:36Z], 4] 03:03:43.807 [debug] QUERY OK source="media_items" db=0.9ms idle=4.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", "d232daaa-a275-4f02-8966-a174fc43b5d2", false, 847, false, "KubQ-pNB1IQ", "https://www.youtube.com/watch?v=KubQ-pNB1IQ", 10, "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", false, false, 4, [], 98, ~U[2026-10-07 09:00:36Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", 847, false, "KubQ-pNB1IQ", "https://www.youtube.com/watch?v=KubQ-pNB1IQ", "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", false, 4, ~U[2026-10-07 09:00:36Z]] 03:03:43.808 [debug] QUERY OK source="sources" db=0.4ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.810 [debug] QUERY OK source="media_items" db=1.2ms idle=4.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 09:00:09Z], 4] 03:03:43.811 [debug] QUERY OK source="media_items" db=0.7ms idle=5.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", "19cfa4ac-56fc-4a43-a5e4-ee312047b540", false, 986, false, "gFzWJSUdjFY", "https://www.youtube.com/watch?v=gFzWJSUdjFY", 11, "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", false, false, 4, [], 98, ~U[2026-10-06 09:00:09Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", 986, false, "gFzWJSUdjFY", "https://www.youtube.com/watch?v=gFzWJSUdjFY", "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", false, 4, ~U[2026-10-06 09:00:09Z]] 03:03:43.811 [debug] QUERY OK source="sources" db=0.2ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.812 [debug] QUERY OK source="media_items" db=0.8ms idle=4.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 09:00:11Z], 4] 03:03:43.814 [debug] QUERY OK source="media_items" db=1.1ms idle=4.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약과 답장 초안을 만듭니다.\n6. JEV테스트 라벨에 광고와 문의 메일을 각각 넣어 판정 기록과 Telegram 알림을 대조했습니다. 이번 작업 범위는 읽기·분류·초안 생성입니다.\n\n복사용 요청문 1 · 지난 메일 다시 읽기\n최근 1년 받은 메일을 JEV로 한 통씩 판정해 줘. 시작 전에 예상 비용과 외부 API로 전송되는 내용을 알려 줘. 질문은 대량 발송·자동 알림·구체적 요청·매출 기회·진행 중 거래·필요한 행동·무시 가능 여부·처리 경로로 나눠 줘. 답장 점수가 높은 메일을 보낸편지함과 대조하고, 다시 확인할 의뢰를 날짜·제목·보낸 사람으로 뽑아 줘. 원본은 읽기 전용으로 다루고 결과 목록을 별도 파일에 저장해 줘.\n\n복사용 요청문 2 · 앞으로 오는 메일\n먼저 테스트 라벨을 대상으로 만들어 줘. 주기 실행 작업의 앞단 스크립트가 Gmail을 읽고 JEV 플러그인의 API 클라이언트로 판정하게 해 줘. 확인할 메일이 있을 때 Hermes를 호출해 요약·답장 초안을 내 Telegram으로 보내 줘. 보안 단어·애매한 판정·API 오류는 사람이 확인하도록 알려 줘. 광고와 뉴스레터는 별도 분류하고 저녁에 목록을 보여 줘. 원본은 읽기 전용, 답장은 초안 생성까지로 범위를 정해 줘. 필요한 권한과 비용을 먼저 알려 주고 광고 1통·문의 1통으로 검증해 줘.\n\n실측과 계산 기준\n- 1년치: 2026-09-29, 11,370통, 입력 17,442,153토큰, 10개 병렬, 약 19분. JEV 판정 사용료를 원화로 환산·반올림하면 약 1,000원\n- 약 1,000원은 JEV의 메일 판정 사용료에 해당합니다. 원화 금액은 설명용 환산값입니다.\n- 코덱스 44시간: 기존 한 통 중앙값 14초 × 11,370통으로 계산한 예상 시간\n- 53%: JEV가 무시 항목으로 분류한 비율\n- 실제 답장한 외부 메일 876통과 대조했을 때, 36통이 무시 항목으로 분류됨\n- Hermes 배포: 이 서버에서 약 3분 30초\n- 광고 메일: Hermes 혼자 7.4초·12,770토큰 / JEV 먼저 0.6초·Hermes 0토큰. JEV 입력 약 1,000토큰의 판정 사용료 발생\n- 문의 메일: Hermes 혼자 11.8초·13,014토큰 / JEV 먼저 12.5초·13,017토큰\n- 별도 메일 비서 운영에서 68통을 점검했고 35%를 JEV 단계에서 처리\n- 맥 자동화 프로세스를 중지한 뒤 VPS의 Telegram 알림 수신 확인\n- 시연에는 가상 발신자의 테스트 메일 사용\n\n#JEV #제브 #AI자동화 #메일자동화 #헤르메스 #Hostinger", "JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계", "746e585e-684d-4ef5-ae01-040756f5a069", false, 693, false, "f0zt411z2yQ", "https://www.youtube.com/watch?v=f0zt411z2yQ", 12, "/downloads/윤자동/2026-10-05 JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계/JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계 [f0zt411z2yQ].mp4", false, false, 4, [], 98, ~U[2026-10-05 09:00:11Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약과 (truncated) 03:03:43.814 [debug] QUERY OK source="sources" db=0.1ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.815 [debug] QUERY OK source="media_items" db=0.7ms idle=3.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 09:00:38Z], 4] 03:03:43.816 [debug] QUERY OK source="media_items" db=0.5ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", "6aba56ef-f6f5-49c4-8887-8e805515b189", false, 1073, false, "9qwO1IzMc0Q", "https://www.youtube.com/watch?v=9qwO1IzMc0Q", 13, "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", false, false, 4, [], 98, ~U[2026-10-04 09:00:38Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", 1073, false, "9qwO1IzMc0Q", "https://www.youtube.com/watch?v=9qwO1IzMc0Q", "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", false, 4, ~U[2026-10-04 09:00:38Z]] 03:03:43.816 [debug] QUERY OK source="sources" db=0.1ms idle=3.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.817 [debug] QUERY OK source="media_items" db=0.6ms idle=2.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 09:00:00Z], 4] 03:03:43.818 [debug] QUERY OK source="media_items" db=0.6ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", "668bbbce-ee97-46f1-9fe8-c42bed050773", false, 537, false, "tc314_9zH_s", "https://www.youtube.com/watch?v=tc314_9zH_s", 14, "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", false, false, 4, [], 97, ~U[2026-10-03 09:00:00Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", 537, false, "tc314_9zH_s", "https://www.youtube.com/watch?v=tc314_9zH_s", "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", false, 4, ~U[2026-10-03 09:00:00Z]] 03:03:43.818 [debug] QUERY OK source="sources" db=0.2ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.820 [debug] QUERY OK source="media_items" db=1.5ms idle=2.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 03:47:41Z], 4] 03:03:43.822 [debug] QUERY OK source="media_items" db=0.9ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", "aea33f6f-64ba-42fe-8d6e-b323b007539a", false, 538, false, "zFQNgZn9hKo", "https://www.youtube.com/watch?v=zFQNgZn9hKo", 15, "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", false, false, 4, [], 97, ~U[2026-10-03 03:47:41Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", 538, false, "zFQNgZn9hKo", "https://www.youtube.com/watch?v=zFQNgZn9hKo", "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", false, 4, ~U[2026-10-03 03:47:41Z]] 03:03:43.822 [debug] QUERY OK source="sources" db=0.3ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.823 [debug] QUERY OK source="media_items" db=1.0ms idle=4.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-02 09:00:47Z], 4] 03:03:43.825 [debug] QUERY OK source="media_items" db=0.7ms idle=5.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", "7e3a66cd-f31d-4459-a9ae-da1a4a84b544", false, 507, false, "BFg_JcoGuX0", "https://www.youtube.com/watch?v=BFg_JcoGuX0", 16, "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", false, false, 4, [], 98, ~U[2026-10-02 09:00:47Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", 507, false, "BFg_JcoGuX0", "https://www.youtube.com/watch?v=BFg_JcoGuX0", "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", false, 4, ~U[2026-10-02 09:00:47Z]] 03:03:43.825 [debug] QUERY OK source="sources" db=0.3ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.827 [debug] QUERY OK source="media_items" db=1.1ms idle=3.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-01 09:00:27Z], 4] 03:03:43.828 [debug] QUERY OK source="media_items" db=0.7ms idle=4.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", "b9dbf946-d80e-4213-ae1b-1355ebba4593", false, 365, false, "xEV7i8WKdpc", "https://www.youtube.com/watch?v=xEV7i8WKdpc", 17, "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", false, false, 4, [], 97, ~U[2026-10-01 09:00:27Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", 365, false, "xEV7i8WKdpc", "https://www.youtube.com/watch?v=xEV7i8WKdpc", "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", false, 4, ~U[2026-10-01 09:00:27Z]] 03:03:43.828 [debug] QUERY OK source="sources" db=0.2ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.829 [debug] QUERY OK source="media_items" db=0.8ms idle=3.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-01 04:29:12Z], 4] 03:03:43.833 [debug] QUERY OK source="media_items" db=3.1ms idle=4.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", "b30fad63-5893-498a-9460-9829ebfe39c1", false, 570, false, "9wao057EuSA", "https://www.youtube.com/watch?v=9wao057EuSA", 18, "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", false, false, 4, [], 97, ~U[2026-10-01 04:29:12Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", 570, false, "9wao057EuSA", "https://www.youtube.com/watch?v=9wao057EuSA", "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", false, 4, ~U[2026-10-01 04:29:12Z]] 03:03:43.833 [debug] QUERY OK source="sources" db=0.3ms idle=6.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.834 [debug] QUERY OK source="media_items" db=0.9ms idle=5.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-30 23:54:56Z], 4] 03:03:43.836 [debug] QUERY OK source="media_items" db=0.8ms idle=6.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", "3e3b12ca-f617-46b8-aa18-6cd6151ae4b0", false, 351, false, "LXLXiFJmW5A", "https://www.youtube.com/watch?v=LXLXiFJmW5A", 19, "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", false, false, 4, [], 96, ~U[2026-09-30 23:54:56Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", 351, false, "LXLXiFJmW5A", "https://www.youtube.com/watch?v=LXLXiFJmW5A", "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", false, 4, ~U[2026-09-30 23:54:56Z]] 03:03:43.836 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [4] 03:03:43.838 [debug] QUERY OK source="media_items" db=1.1ms idle=4.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-30 09:00:18Z], 4] 03:03:43.839 [debug] QUERY OK source="media_items" db=0.9ms idle=4.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["메타가 준다는 AI 토큰 10억 개, 한국에서 진짜 공짜로 받을 수 있는지 제 맥북에서 직접 가입해 보며 영수증처럼 정산했습니다. 공식 발표로 확인된 것, 한국에서 멈춘 지점, 공짜라던 방법에 붙은 비용과 위험까지 담았습니다.\n\n가입 전 체크리스트\n· Muse 이용 대상: 미국(9/8 출시), 캐나다(9/18), 만 18세 이상\n· 초대 코드: 가입 후 48시간 안에 설정에서 입력, 양쪽 10억 토큰, 1인 최대 20명 (Muse 공식 계정 9/16 발표)\n· 무료 요금제: 매주 1억 토큰, 10억은 약 10주 치\n· 제미나이 스파크 조건: 만 18세 이상, 개인 구글 계정, 활동 기록 켜기, Google AI Pro(월 29,000원) 이상 구독. 회사(Workspace) 계정은 불가\n· 지역 제한을 돌아가는 방법은 메타 계정 제한 위험이 있습니다\n\n00:00 공짜 10억 토큰의 영수증\n00:38 Muse가 뭔데 10억을 주나요\n01:36 10억이면 얼마나 쓰나요\n02:08 한국에서 그냥 가입하면 되나요\n02:51 제미나이 스파크면 공짜인가요\n04:15 위험은 없나요\n04:54 그래서 저는 해야 하나요\n05:30 정리\n\n확인한 페이지: 메타 고객센터 \"Muse 구독 정보\", 구글 도움말 \"Gemini Spark\", Google One 요금(한국), muse.ai. 정보는 2026년 9월 26일 기준이며 바뀔 수 있습니다.\n영상 속 화면 녹화는 AI 에이전트가 제 맥북에서 진행했고, 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 Mixkit\n\n#메타 #Muse #뮤즈 #AI에이전트 #제미나이스파크 #초대코드 #AI무료", "메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)", "2d60a00a-d39e-4e5c-bf87-b61cc78303bc", false, 359, false, "2X-lb7E9cBA", "https://www.youtube.com/watch?v=2X-lb7E9cBA", 20, "/downloads/윤자동/2026-09-30 메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)/메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크) [2X-lb7E9cBA].mp4", false, false, 4, [], 96, ~U[2026-09-30 09:00:18Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "메타가 준다는 AI 토큰 10억 개, 한국에서 진짜 공짜로 받을 수 있는지 제 맥북에서 직접 가입해 보며 영수증처럼 정산했습니다. 공식 발표로 확인된 것, 한국에서 멈춘 지점, 공짜라던 방법에 붙은 비용과 위험까지 담았습니다.\n\n가입 전 체크리스트\n· Muse 이용 대상: 미국(9/8 출시), 캐나다(9/18), 만 18세 이상\n· 초대 코드: 가입 후 48시간 안에 설정에서 입력, 양쪽 10억 토큰, 1인 최대 20명 (Muse 공식 계정 9/16 발표)\n· 무료 요금제: 매주 1억 토큰, 10억은 약 10주 치\n· 제미나이 스파크 조건: 만 18세 이상, 개인 구글 계정, 활동 기록 켜기, Google AI Pro(월 29,000원) 이상 구독. 회사(Workspace) 계정은 불가\n· 지역 제한을 돌아가는 방법은 메타 계정 제한 위험이 있습니다\n\n00:00 공짜 10억 토큰의 영수증\n00:38 Muse가 뭔데 10억을 주나요\n01:36 10억이면 얼마나 쓰나요\n02:08 한국에서 그냥 가입하면 되나요\n02:51 제미나이 스파크면 공짜인가요\n04:15 위험은 없나요\n04:54 그래서 저는 해야 하나요\n05:30 정리\n\n확인한 페이지: 메타 고객센터 \"Muse 구독 정보\", 구글 도움말 \"Gemini Spark\", Google One 요금(한국), muse.ai. 정보는 2026년 9월 26일 기준이며 바뀔 수 있습니다.\n영상 속 화면 녹화는 AI 에이전트가 제 맥북에서 진행했고, 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 Mixkit\n\n#메타 #Muse #뮤즈 #AI에이전트 #제미나이스파크 #초대코드 #AI무료", "메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)", 359, false, "2X-lb7E9cBA", "https://www.youtube.com/watch?v=2X-lb7E9cBA", "/downloads/윤자동/2026-09-30 메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)/메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크) [2X-lb7E9cBA].mp4", false, 4, ~U[2026-09-30 09:00:18Z]] 03:03:43.840 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [4] 03:03:43.841 [debug] QUERY OK source="media_items" db=0.8ms idle=4.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-30 01:57:59Z], 4] 03:03:43.842 [debug] QUERY OK source="media_items" db=0.9ms idle=4.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["오늘 새벽 OpenAI 데브데이에서 발표가 20개 넘게 나왔습니다. 우리 일과 지갑에 바로 닿는 5가지를 골라 공식 발표 화면과 X·레딧·스레드 사용자 반응을 같이 정리했습니다.\n한국시간 2026년 9월 30일 기준이며, 기능별 제공 시점과 요금 조건은 계정·지역에 따라 다릅니다.\n\n0:00 인트로 · 반응이 갈린 발표\n0:44 1. Dots, 24시간 일하는 AI 비서\n1:30 2. GPT-6.1 Sol, Astra급 성능에 1/5 가격\n2:03 3. 챗GPT 스페이스·페이지스\n2:20 4. 코덱스 클라우드\n2:42 5. 챗GPT 로그인으로 구독 쓰기\n3:16 사용자 반응 · X·레딧·스레드\n4:22 요금제와 조건\n5:09 지금 할 일 3가지\n\n출처\n- OpenAI DevDay 2026 공식 키노트: https://www.youtube.com/watch?v=Fls_onRviPM\n- DevDay 2026 주요 발표: https://openai.com/index/devday-2026-recap/\n- Dots: https://openai.com/index/introducing-dots/\n- Dots 시작하기: https://help.openai.com/en/articles/20001530-getting-started-with-your-dot\n- GPT-6.1 Sol: https://openai.com/index/introducing-gpt-6-1-sol/\n- GPT-6.1 Sol API 단가: https://developers.openai.com/api/docs/models/gpt-6.1-sol\n- Pro 요금제: https://help.openai.com/en/articles/9793128-about-chatgpt-pro-tiers\n- 다른 앱에서 ChatGPT 요금제 쓰기: https://help.openai.com/en/articles/20001542-using-your-chatgpt-plan-in-other-apps-and-sites\n- X @theo: https://x.com/theo/status/2104995863689142546\n- X @SPAC89: https://x.com/SPAC89/status/2105003567455043610\n- X @kloss_xyz: https://x.com/kloss_xyz/status/2105007024475935140\n- Reddit r/codex: https://www.reddit.com/r/codex/comments/1wth66j/announcements_from_dev_day/\n- Threads @reality404studio: https://www.threads.com/@reality404studio/post/Dd41zTVkvdW\n- Threads @eddmpython: https://www.threads.com/@eddmpython/post/Dd43SwOEnvd\n- Threads @youngchangjo: https://www.threads.com/@youngchangjo/post/Dd45JxKkp_e\n\n제작 고지\n- 화면 조작·녹화: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 배경 삽화: AI 이미지 생성\n\n#OpenAI #DevDay2026 #Dots #GPT61Sol #코덱스 #챗GPT #AI에이전트 #윤자동", "자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지", "5de0095a-3e51-4316-a180-b2f6a13fc9de", false, 352, false, "_p56kpCvCTU", "https://www.youtube.com/watch?v=_p56kpCvCTU", 21, "/downloads/윤자동/2026-09-30 자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지/자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지 [_p56kpCvCTU].mp4", false, false, 4, [], 96, ~U[2026-09-30 01:57:59Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "오늘 새벽 OpenAI 데브데이에서 발표가 20개 넘게 나왔습니다. 우리 일과 지갑에 바로 닿는 5가지를 골라 공식 발표 화면과 X·레딧·스레드 사용자 반응을 같이 정리했습니다.\n한국시간 2026년 9월 30일 기준이며, 기능별 제공 시점과 요금 조건은 계정·지역에 따라 다릅니다.\n\n0:00 인트로 · 반응이 갈린 발표\n0:44 1. Dots, 24시간 일하는 AI 비서\n1:30 2. GPT-6.1 Sol, Astra급 성능에 1/5 가격\n2:03 3. 챗GPT 스페이스·페이지스\n2:20 4. 코덱스 클라우드\n2:42 5. 챗GPT 로그인으로 구독 쓰기\n3:16 사용자 반응 · X·레딧·스레드\n4:22 요금제와 조건\n5:09 지금 할 일 3가지\n\n출처\n- OpenAI DevDay 2026 공식 키노트: https://www.youtube.com/watch?v=Fls_onRviPM\n- DevDay 2026 주요 발표: https://openai.com/index/devday-2026-recap/\n- Dots: https://openai.com/index/introducing-dots/\n- Dots 시작하기: https://help.openai.com/en/articles/20001530-getting-started-with-your-dot\n- GPT-6.1 Sol: https://openai.com/index/introducing-gpt-6-1-sol/\n- GPT-6.1 Sol API 단가: https://developers.openai.com/api/docs/models/gpt-6.1-sol\n- Pro 요금제: https://help.openai.com/en/articles/9793128-about-chatgpt-pro-tiers\n- 다른 앱에서 ChatGPT 요금제 쓰기: https://help.openai.com/en/articles/20001542-using-your-chatgpt-plan-in-other-apps-and-sites\n- X @theo: https://x.com/theo/status/2104995863689142546\n- X @SPAC89: https://x.com/SPAC89/status/2105003567455043610\n- X @kloss_xyz: https://x.com/kloss_xyz/status/2105007024475935140\n- Reddit r/codex: https://www.reddit.com/r/codex/comments/1wth66j/announcements_from_dev_day/\n- Threads @reality404studio: https://www.threads.com/@reality404studio/post/Dd41zTVkvdW\n- Threads @eddmpython: https://www.threads.com/@eddmpython/post/Dd43SwOEnvd\n- Threads @youngchangjo: https://www.threads.com/@youngchangjo/post/Dd45JxKkp_e\n\n제작 고지\n- 화면 조작·녹화: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 배경 삽화: AI 이미지 생성\n\n#OpenAI #DevDay2026 #Dots #GPT61Sol #코덱스 #챗GPT #AI에이전트 #윤자동", "자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지", 352, false, "_p56kpCvCTU", "https://www.youtube.com/watch?v=_p56kpCvCTU", "/downloads/윤자동/2026-09-30 자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지/자는 동안 일하는 AI, 반응이 갈린 이유 · OpenAI 데브데이 2026 핵심 5가지 [_p56kpCvCTU].mp4", false, 4, ~U[2026-09-30 01:57:59Z]] 03:03:43.842 [debug] QUERY OK source="sources" db=0.1ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:43.843 [debug] QUERY OK source="media_items" db=0.7ms idle=3.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-29 15:42:00Z], 4] 03:03:43.844 [debug] QUERY OK source="media_items" db=0.7ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Sonnet 5.5가 반값에 Opus 5.5를 이겼다는 공식 표, 그리고 \"토큰 먹는 하마\"라는 후기. 누가 맞는지 같은 과제로 직접 경주시켜 봤습니다.\n공식 발표·제3자 측정·사용자 후기를 확인하고, 어떤 일에 어떤 설정을 켜면 되는지 정리했습니다.\n\n0:00 오프닝\n0:40 뭐가 달라졌길래 난리예요?\n1:24 진짜 오퍼스를 이겼어요?\n2:12 써 본 사람들은 뭐래요?\n3:14 직접 시키면 누가 이겨요?\n5:05 토큰 먹는 하마라던데요?\n6:11 그래서 저는 뭘 켜야 해요?\n\n출처\n- 앤트로픽 공식 발표(2026.09.28): https://www.anthropic.com/claude-sonnet-5-5\n- 공식 문서 모델 개요: https://platform.claude.com/docs/en/models/sonnet-5-5/overview\n- Artificial Analysis: https://artificialanalysis.ai/models/claude-sonnet-5-5\n- Vals.ai: https://www.vals.ai/models/anthropic_claude-sonnet-5-5\n- 공식 X 발표: https://x.com/claudeai/status/2104633115620823187\n\n측정 조건\n- 2026.09.29, 제 맥에서 직접 실행\n- claude.ai 찌르레기 경기: 노력 \"중간\", 모델별 1회\n- Claude Code 경주(Claude Code 2.1.284): 버그 5개·테스트 7개 과제, 중간 설정 5회·맥스 3회\n- 비용은 Claude Code가 계산한 API 요금 환산값(구독 사용량과 다름)\n\n제작 고지\n- 화면 조작: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 영상 속 삽화(로봇 경주·경기장·하마)는 AI 이미지 생성\n\n#Sonnet55 #클로드 #ClaudeCode #Opus55 #AI모델비교 #업무자동화 #윤자동", "반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다", "8adc53c5-7b1c-4f1a-a5e0-ea98f8d196db", false, 445, false, "VXCKC_WEzxY", "https://www.youtube.com/watch?v=VXCKC_WEzxY", 22, "/downloads/윤자동/2026-09-29 반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다/반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다 [VXCKC_WEzxY].mp4", false, false, 4, [], 97, ~U[2026-09-29 15:42:00Z], ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], "Sonnet 5.5가 반값에 Opus 5.5를 이겼다는 공식 표, 그리고 \"토큰 먹는 하마\"라는 후기. 누가 맞는지 같은 과제로 직접 경주시켜 봤습니다.\n공식 발표·제3자 측정·사용자 후기를 확인하고, 어떤 일에 어떤 설정을 켜면 되는지 정리했습니다.\n\n0:00 오프닝\n0:40 뭐가 달라졌길래 난리예요?\n1:24 진짜 오퍼스를 이겼어요?\n2:12 써 본 사람들은 뭐래요?\n3:14 직접 시키면 누가 이겨요?\n5:05 토큰 먹는 하마라던데요?\n6:11 그래서 저는 뭘 켜야 해요?\n\n출처\n- 앤트로픽 공식 발표(2026.09.28): https://www.anthropic.com/claude-sonnet-5-5\n- 공식 문서 모델 개요: https://platform.claude.com/docs/en/models/sonnet-5-5/overview\n- Artificial Analysis: https://artificialanalysis.ai/models/claude-sonnet-5-5\n- Vals.ai: https://www.vals.ai/models/anthropic_claude-sonnet-5-5\n- 공식 X 발표: https://x.com/claudeai/status/2104633115620823187\n\n측정 조건\n- 2026.09.29, 제 맥에서 직접 실행\n- claude.ai 찌르레기 경기: 노력 \"중간\", 모델별 1회\n- Claude Code 경주(Claude Code 2.1.284): 버그 5개·테스트 7개 과제, 중간 설정 5회·맥스 3회\n- 비용은 Claude Code가 계산한 API 요금 환산값(구독 사용량과 다름)\n\n제작 고지\n- 화면 조작: AI 에이전트\n- 나레이션: 제 목소리를 복제한 AI 음성\n- 영상 속 삽화(로봇 경주·경기장·하마)는 AI 이미지 생성\n\n#Sonnet55 #클로드 #ClaudeCode #Opus55 #AI모델비교 #업무자동화 #윤자동", "반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다", 445, false, "VXCKC_WEzxY", "https://www.youtube.com/watch?v=VXCKC_WEzxY", "/downloads/윤자동/2026-09-29 반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다/반값 소넷이 오퍼스를 이겼다? Sonnet 5.5 직접 경주시켜 봤습니다 [VXCKC_WEzxY].mp4", false, 4, ~U[2026-09-29 15:42:00Z]] 03:03:43.845 [debug] QUERY OK source="sources" db=0.1ms idle=3.9ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z], 4] 03:03:43.846 [debug] QUERY OK source="media_items" db=0.7ms idle=2.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")))) [4] 03:03:43.847 [debug] QUERY OK source="media_items" db=0.6ms idle=3.0ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 03:03:43.847 [debug] QUERY OK source="media_items" db=0.2ms idle=2.8ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 03:03:43.847 [info] No notification servers provided for source 4 03:03:43.848 [debug] QUERY OK source="tasks" db=0.1ms idle=1.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16329, 4, ~U[2026-10-17 03:03:43Z], ~U[2026-10-17 03:03:43Z]] 03:03:43.848 [info] {"args":{"id":4},"id":16290,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":38995041,"event":"job:stop","queue_time":240853,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:03:53.383 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3quu283_05I --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8b/a3/8ba30f6e271557abc48df28cecc89425a29db37b64648d6c0ccaf3b4c0f7eac5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 03:03:53.399 [debug] Running yt-dlp command for action: download_thumbnail 03:03:53.400 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:03:53.400 [debug] QUERY OK source="settings" db=0.1ms idle=411.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:53.400 [debug] QUERY OK source="settings" db=0.0ms idle=411.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:53.400 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3quu283_05I --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50467/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/49/45/49459244e094497995aa905b6e03741c8a0a0da927efd8c9fe7518c38156e2ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:56.008 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3quu283_05I --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50467/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/49/45/49459244e094497995aa905b6e03741c8a0a0da927efd8c9fe7518c38156e2ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:03:56.008 [debug] QUERY OK db=0.0ms idle=1019.9ms begin [] 03:03:56.009 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_filepath" = ?, "media_downloaded_at" = ?, "metadata_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", ~U[2026-10-17 03:03:53Z], "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].info.json", [["ko", "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].ko.srt"]], "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I]-thumb.jpg", ~U[2026-10-17 03:03:56Z], 50467] 03:03:56.010 [debug] QUERY OK source="media_metadata" db=0.2ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/50467/metadata.json.gz", "/config/metadata/media_items/50467/thumbnail.jpg", 50467, ~U[2026-10-17 03:03:56Z], ~U[2026-10-17 03:03:56Z]] 03:03:56.010 [debug] QUERY OK db=0.1ms commit [] 03:03:56.011 [debug] QUERY OK source="media_items" db=0.5ms idle=1021.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [383982553, ~U[2026-10-17 03:03:56Z], 50467] 03:03:56.011 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:56.011 [info] {"args":{"id":50467},"id":16328,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":45087789,"event":"job:stop","queue_time":922878,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:00.870 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:04:04.028 [info] {"source":"oban","duration":1092,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:04:34.031 [info] {"source":"oban","duration":1144,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:04:43.974 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792206283973822897,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:43.974 [debug] QUERY OK source="media_items" db=0.3ms idle=1985.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" = ?) [5378] 03:04:43.974 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:04:43.975 [debug] QUERY OK source="sources" db=0.2ms idle=1985.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:04:43.975 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1009.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] 03:04:43.975 [debug] QUERY OK source="media_items" db=0.3ms idle=8.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 [5378] 03:04:43.976 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [5378] 03:04:43.976 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 03:04:43.977 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:43.977 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:04:43.977 [debug] Running yt-dlp command for action: get_downloadable_status 03:04:44.018 [debug] QUERY OK source="settings" db=0.3ms idle=41.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:44.018 [debug] QUERY OK source="settings" db=0.1ms idle=41.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:44.018 [debug] QUERY OK source="settings" db=0.1ms idle=41.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:44.018 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/11/1311d0e60596a80a37da413fa02dd96f26fb0fe8557097e94dc9d8284869243a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:04:45.504 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/11/1311d0e60596a80a37da413fa02dd96f26fb0fe8557097e94dc9d8284869243a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:04:45.504 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:04:45.505 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1530839,"event":"job:exception","queue_time":271253,"attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:49.980 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792206289980869649,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:49.981 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792206289980929380,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:49.981 [debug] QUERY OK source="media_items" db=0.2ms idle=992.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" = ?) [13649] 03:04:49.981 [debug] QUERY OK source="media_items" db=0.2ms idle=992.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" = ?) [13717] 03:04:49.981 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:04:49.981 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:04:49.982 [debug] QUERY OK source="sources" db=0.2ms idle=992.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:04:49.982 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [3] 03:04:49.982 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:49.982 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:49.983 [debug] QUERY OK source="media_items" db=0.3ms idle=1.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13649] 03:04:49.983 [debug] QUERY OK source="media_items" db=0.2ms idle=0.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13717] 03:04:50.381 [debug] QUERY OK source="media_metadata" db=0.1ms idle=398.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" = ?) [13717] 03:04:50.381 [debug] QUERY OK source="media_profiles" db=0.2ms idle=398.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] 03:04:50.381 [debug] QUERY OK source="settings" db=0.0ms idle=398.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:50.381 [debug] QUERY OK source="settings" db=0.0ms idle=398.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:50.405 [debug] Running yt-dlp command for action: get_downloadable_status 03:04:50.405 [debug] QUERY OK source="media_metadata" db=0.2ms idle=422.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" = ?) [13649] 03:04:50.406 [debug] QUERY OK source="media_profiles" db=0.1ms idle=24.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] 03:04:50.406 [debug] QUERY OK source="settings" db=0.1ms idle=25.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:50.406 [debug] QUERY OK source="settings" db=0.0ms idle=24.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:50.457 [debug] Running yt-dlp command for action: get_downloadable_status 03:04:50.458 [debug] QUERY OK source="settings" db=0.2ms 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 [] 03:04:50.458 [debug] QUERY OK source="settings" db=0.0ms idle=52.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:50.458 [debug] QUERY OK source="settings" db=0.0ms idle=52.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:50.458 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/ec/77ec89a578fc52f9a7db90e7ec83a1c2e70468c4268df42cb16b5d70ea44f7c4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:04:50.500 [debug] QUERY OK source="settings" db=0.1ms idle=93.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:50.500 [debug] QUERY OK source="settings" db=0.0ms idle=93.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:50.500 [debug] QUERY OK source="settings" db=0.1ms idle=42.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:50.500 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f5/bc/f5bcc9b095d05fe063254517b1bb6f17e8f82c00bb447eceb4188884f8313d56.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:04:51.877 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/ec/77ec89a578fc52f9a7db90e7ec83a1c2e70468c4268df42cb16b5d70ea44f7c4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:04:51.877 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:04:51.878 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1896631,"event":"job:exception","queue_time":452788,"attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:51.885 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f5/bc/f5bcc9b095d05fe063254517b1bb6f17e8f82c00bb447eceb4188884f8313d56.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:04:51.886 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:04:51.886 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1905448,"event":"job:exception","queue_time":171099,"attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:51.984 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792206291984437752,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:51.984 [debug] QUERY OK source="media_items" db=0.1ms idle=100.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" = ?) [37712] 03:04:51.985 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:04:51.985 [debug] QUERY OK source="sources" db=0.1ms idle=98.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:04:51.985 [debug] QUERY OK source="media_profiles" db=0.1ms idle=91.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] 03:04:51.985 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [37712] 03:04:51.986 [debug] QUERY OK source="media_metadata" db=0.0ms idle=1.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [37712] 03:04:51.986 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:51.986 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:04:51.986 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:04:51.987 [debug] Running yt-dlp command for action: get_downloadable_status 03:04:52.020 [debug] QUERY OK source="settings" db=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 [] 03:04:52.020 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:04:52.020 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:04:52.020 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/63/b8/63b8b2166199edeeb7fc139074ff79107fc4b30e5755b131ef6e9a30f2e5e7f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:04:54.505 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/63/b8/63b8b2166199edeeb7fc139074ff79107fc4b30e5755b131ef6e9a30f2e5e7f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] unable to extract yt initial data; please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U WARNING: [youtube] Incomplete data received in embedded initial data; re-fetching using API. WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:04:54.505 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] unable to extract yt initial data; please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U\nWARNING: [youtube] Incomplete data received in embedded initial data; re-fetching using API.\nWARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:04:54.506 [debug] QUERY OK source="media_items" db=0.6ms idle=1516.5ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: [youtube] unable to extract yt initial data; please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U\nWARNING: [youtube] Incomplete data received in embedded initial data; re-fetching using API.\nWARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n", ~U[2026-10-17 03:04:54Z], 37712] 03:04:54.506 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":2521970,"event":"job:exception","queue_time":603176,"attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:56.990 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792206296990497232,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:56.991 [debug] QUERY OK source="media_items" db=0.2ms idle=1001.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" = ?) [1922] 03:04:56.991 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:04:56.991 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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" = ?) [3] 03:04:56.991 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1002.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] 03:04:56.992 [debug] QUERY OK source="media_items" db=0.2ms idle=7.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 [1922] 03:04:57.036 [debug] QUERY OK source="media_metadata" db=0.1ms idle=46.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" = ?) [1922] 03:04:57.037 [debug] QUERY OK source="media_profiles" db=0.2ms idle=45.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] 03:04:57.037 [debug] QUERY OK source="settings" db=0.0ms idle=46.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:57.037 [debug] QUERY OK source="settings" db=0.0ms idle=45.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:57.038 [debug] Running yt-dlp command for action: get_downloadable_status 03:04:57.073 [debug] QUERY OK source="settings" db=0.1ms idle=81.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:57.073 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:04:57.074 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:04:57.074 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3a/64/3a643545ab1a0390da0ef0bbfe449224cffe81bb4656821419e5374de96546a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:04:58.758 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3a/64/3a643545ab1a0390da0ef0bbfe449224cffe81bb4656821419e5374de96546a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:04:58.758 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:04:58.759 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1768241,"event":"job:exception","queue_time":237780,"attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:05:00.871 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:05:04.033 [info] {"source":"oban","duration":1127,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:05:34.035 [info] {"source":"oban","duration":1209,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:05:39.034 [info] {"args":{"id":7},"id":16292,"meta":{},"system_time":1792206339034516434,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:05:39.034 [debug] QUERY OK source="sources" db=0.1ms idle=1045.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] 03:05:39.035 [debug] QUERY OK source="settings" db=0.0ms idle=1046.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:39.053 [debug] QUERY OK source="media_items" db=18.4ms idle=1008.8ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 03:05:39.056 [debug] QUERY OK source="media_items" db=2.6ms queue=0.1ms idle=25.7ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 03:05:39.057 [debug] QUERY OK source="media_profiles" db=0.2ms idle=22.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] 03:05:39.057 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:05:39.057 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:05:39.097 [debug] QUERY OK source="media_items" db=5.2ms idle=38.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" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [7] 03:05:39.099 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 03:05:39.099 [debug] Current batch of media processed. Will check again in 1000ms 03:05:39.099 [debug] QUERY OK source="settings" db=0.2ms idle=42.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:39.099 [debug] QUERY OK source="settings" db=0.0ms idle=42.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:39.099 [debug] QUERY OK source="settings" db=0.0ms idle=42.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:39.100 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@hs_academy --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/77/d7/77d7a3ed1035ec22882625100bbfc906d847305d52a4e3c1a80916bb25cbef31.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/5c/98/5c988ab582be002afdf982c16585731d4e5e89f4363798814620b837c698378f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:05:40.099 [debug] Current batch of media processed. Will check again in 1000ms 03:05:41.100 [debug] Current batch of media processed. Will check again in 1000ms 03:05:42.101 [debug] Current batch of media processed. Will check again in 1000ms 03:05:43.103 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "duration" => 1098, "filename" => "/downloads/이효석아카데미/2026-10-17 국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?/국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면? [ViVdiknpn04].mp4", "id" => "ViVdiknpn04", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ViVdiknpn04", "playlist_index" => 1, "timestamp" => 1792201431, "title" => "국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?", "upload_date" => "20261017"} 03:05:43.103 [debug] QUERY OK source="sources" db=0.2ms idle=113.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:43.104 [debug] QUERY OK source="sources" db=0.3ms idle=113.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] 03:05:43.111 [debug] QUERY OK source="media_items" db=6.8ms idle=114.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-17 01:43:51Z], 7] 03:05:43.112 [debug] QUERY OK source="media_items" db=0.7ms idle=121.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?", "bb92ecb0-8b63-4711-8901-d63fabb88f1e", false, 1098, false, "ViVdiknpn04", "https://www.youtube.com/watch?v=ViVdiknpn04", 1, "/downloads/이효석아카데미/2026-10-17 국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?/국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면? [ViVdiknpn04].mp4", false, false, 7, [], 99, ~U[2026-10-17 01:43:51Z], ~U[2026-10-17 03:05:43Z], ~U[2026-10-17 03:05:43Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?", 1098, false, "ViVdiknpn04", "https://www.youtube.com/watch?v=ViVdiknpn04", "/downloads/이효석아카데미/2026-10-17 국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?/국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면? [ViVdiknpn04].mp4", false, 7, ~U[2026-10-17 01:43:51Z]] 03:05:43.113 [debug] QUERY OK source="sources" db=1.0ms idle=80.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:05:43.114 [debug] QUERY OK source="media_profiles" db=0.2ms idle=10.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:05:43.114 [debug] QUERY OK source="media_items" db=0.1ms idle=10.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50510] 03:05:43.114 [info] Kicking off download for media item #50510 (ViVdiknpn04) 03:05:43.116 [debug] QUERY OK source="tasks" db=0.1ms idle=2.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16330, 50510, ~U[2026-10-17 03:05:43Z], ~U[2026-10-17 03:05:43Z]] 03:05:43.117 [debug] Current batch of media processed. Will check again in 1000ms 03:05:43.124 [info] {"args":{"id":50510},"id":16330,"meta":{},"system_time":1792206343124019406,"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"]} 03:05:43.124 [debug] QUERY OK source="media_items" db=0.2ms 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 WHERE (m0."id" = ?) [50510] 03:05:43.125 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:05:43.125 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [7] 03:05:43.125 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:05:43.126 [debug] QUERY OK source="media_items" db=0.2ms idle=9.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 [50510] 03:05:43.176 [debug] QUERY OK source="media_metadata" db=0.2ms idle=52.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" = ?) [50510] 03:05:43.177 [debug] QUERY OK source="media_profiles" db=0.2ms idle=52.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] 03:05:43.177 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:05:43.177 [debug] QUERY OK source="settings" db=0.0ms idle=51.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:43.177 [debug] Running yt-dlp command for action: get_downloadable_status 03:05:43.178 [debug] QUERY OK source="settings" db=0.0ms idle=52.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:43.178 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:05:43.178 [debug] QUERY OK source="settings" db=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 [] 03:05:43.178 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ViVdiknpn04 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/25/cd/25cd8753ee722429ef46bfdd42bbb3e8434f7d519217748a9b0ba120cd9f3933.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:05:44.117 [debug] Current batch of media processed. Will check again in 1000ms 03:05:45.119 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "duration" => 1759, "filename" => "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", "id" => "XMb_fg0lsYE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=XMb_fg0lsYE", "playlist_index" => 2, "timestamp" => 1792137623, "title" => "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", "upload_date" => "20261016"} 03:05:45.119 [debug] QUERY OK source="sources" db=0.2ms idle=129.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:45.119 [debug] QUERY OK source="sources" db=0.0ms idle=129.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] 03:05:45.126 [debug] QUERY OK source="media_items" db=6.2ms idle=130.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 08:00:23Z], 7] 03:05:45.127 [debug] QUERY OK source="media_items" db=0.6ms idle=136.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", "80b13588-a4c0-4e29-98a0-90a1848f6c1b", false, 1759, false, "XMb_fg0lsYE", "https://www.youtube.com/watch?v=XMb_fg0lsYE", 2, "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", false, false, 7, [], 99, ~U[2026-10-16 08:00:23Z], ~U[2026-10-17 03:05:45Z], ~U[2026-10-17 03:05:45Z], "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", 1759, false, "XMb_fg0lsYE", "https://www.youtube.com/watch?v=XMb_fg0lsYE", "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", false, 7, ~U[2026-10-16 08:00:23Z]] 03:05:45.127 [debug] QUERY OK source="sources" db=0.1ms idle=93.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] 03:05:45.128 [debug] QUERY OK source="media_profiles" db=0.0ms idle=8.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] 03:05:45.128 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [50511] 03:05:45.128 [info] Kicking off download for media item #50511 (XMb_fg0lsYE) 03:05:45.129 [debug] QUERY OK source="tasks" db=0.1ms idle=1.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16331, 50511, ~U[2026-10-17 03:05:45Z], ~U[2026-10-17 03:05:45Z]] 03:05:45.129 [debug] Current batch of media processed. Will check again in 1000ms 03:05:45.137 [info] {"args":{"id":50511},"id":16331,"meta":{},"system_time":1792206345136888472,"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"]} 03:05:45.137 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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" = ?) [50511] 03:05:45.137 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:05:45.138 [debug] QUERY OK source="sources" db=0.2ms idle=8.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:05:45.138 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:05:45.138 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [50511] 03:05:45.139 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [50511] 03:05:45.139 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:05:45.140 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:45.140 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:45.140 [debug] Running yt-dlp command for action: get_downloadable_status 03:05:45.141 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:05:45.141 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:45.141 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:05:45.141 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XMb_fg0lsYE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f4/87/f48740a860447e37f957c015ec4a80aa95ea95388d79e2950e0f4359cf496ff3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:05:45.526 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ViVdiknpn04 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/25/cd/25cd8753ee722429ef46bfdd42bbb3e8434f7d519217748a9b0ba120cd9f3933.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:05:45.526 [debug] Running yt-dlp command for action: download 03:05:45.527 [debug] QUERY OK source="settings" db=0.2ms idle=386.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:45.527 [debug] QUERY OK source="settings" db=0.1ms idle=387.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:45.527 [debug] QUERY OK source="settings" db=0.0ms idle=386.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:45.527 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ViVdiknpn04 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a3/aa/a3aa2fc4a363519783ea6adaae5797cfa36661b004cad8388de3a6b425d49eeb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:05:46.130 [debug] Current batch of media processed. Will check again in 1000ms 03:05:47.132 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "duration" => 1053, "filename" => "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", "id" => "xM3Klkc6zAw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xM3Klkc6zAw", "playlist_index" => 3, "timestamp" => 1792051224, "title" => "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", "upload_date" => "20261015"} 03:05:47.133 [debug] QUERY OK source="sources" db=0.3ms idle=142.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:47.133 [debug] QUERY OK source="sources" db=0.2ms idle=143.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] 03:05:47.140 [debug] QUERY OK source="media_items" db=7.1ms idle=143.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 08:00:24Z], 7] 03:05:47.142 [debug] QUERY OK source="media_items" db=0.9ms idle=151.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", "3c6e9ffa-a0ea-4bd0-887e-8a08d87d492f", false, 1053, false, "xM3Klkc6zAw", "https://www.youtube.com/watch?v=xM3Klkc6zAw", 3, "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", false, false, 7, [], 97, ~U[2026-10-15 08:00:24Z], ~U[2026-10-17 03:05:47Z], ~U[2026-10-17 03:05:47Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", 1053, false, "xM3Klkc6zAw", "https://www.youtube.com/watch?v=xM3Klkc6zAw", "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", false, 7, ~U[2026-10-15 08:00:24Z]] 03:05:47.142 [debug] QUERY OK source="sources" db=0.2ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:05:47.143 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.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] 03:05:47.143 [debug] QUERY OK source="media_items" db=0.1ms idle=9.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 [50300] 03:05:47.144 [debug] Current batch of media processed. Will check again in 1000ms 03:05:47.575 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XMb_fg0lsYE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f4/87/f48740a860447e37f957c015ec4a80aa95ea95388d79e2950e0f4359cf496ff3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:05:47.576 [debug] Running yt-dlp command for action: download 03:05:47.577 [debug] QUERY OK source="settings" db=1.1ms idle=435.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:47.577 [debug] QUERY OK source="settings" db=0.1ms idle=435.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:47.577 [debug] QUERY OK source="settings" db=0.1ms idle=435.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:05:47.578 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XMb_fg0lsYE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/eb/00/eb00eefda059e1ebd73dc4d3acc0b633235ce1d422a4a346dc82f65f5f48c2f1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:05:48.144 [debug] Current batch of media processed. Will check again in 1000ms 03:05:49.146 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "duration" => 645, "filename" => "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", "id" => "SC6jvx4Nkd8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=SC6jvx4Nkd8", "playlist_index" => 4, "timestamp" => 1792023864, "title" => "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", "upload_date" => "20261015"} 03:05:49.146 [debug] QUERY OK source="sources" db=0.3ms idle=156.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:49.147 [debug] QUERY OK source="sources" db=0.1ms idle=156.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] 03:05:49.154 [debug] QUERY OK source="media_items" db=6.8ms idle=157.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 00:24:24Z], 7] 03:05:49.155 [debug] QUERY OK source="media_items" db=0.9ms idle=164.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", "d15fd8f4-1d70-4f7a-af3a-b0b3e5d8e39f", false, 645, false, "SC6jvx4Nkd8", "https://www.youtube.com/watch?v=SC6jvx4Nkd8", 4, "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", false, false, 7, [], 97, ~U[2026-10-15 00:24:24Z], ~U[2026-10-17 03:05:49Z], ~U[2026-10-17 03:05:49Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", 645, false, "SC6jvx4Nkd8", "https://www.youtube.com/watch?v=SC6jvx4Nkd8", "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", false, 7, ~U[2026-10-15 00:24:24Z]] 03:05:49.155 [debug] QUERY OK source="sources" db=0.1ms idle=18.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] 03:05:49.156 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.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] 03:05:49.156 [debug] QUERY OK source="media_items" db=0.1ms idle=9.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 [50086] 03:05:49.156 [debug] Current batch of media processed. Will check again in 1000ms 03:05:50.157 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "duration" => 1656, "filename" => "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", "id" => "gH6kU4vq-vY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gH6kU4vq-vY", "playlist_index" => 5, "timestamp" => 1791973810, "title" => "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", "upload_date" => "20261014"} 03:05:50.157 [debug] QUERY OK source="sources" db=0.2ms idle=1002.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:50.158 [debug] QUERY OK source="sources" db=0.0ms idle=1002.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:05:50.165 [debug] QUERY OK source="media_items" db=6.7ms idle=1002.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 10:30:10Z], 7] 03:05:50.166 [debug] QUERY OK source="media_items" db=0.8ms idle=1009.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", "e7a2efe2-ca61-4353-aabb-cd0ba70da8be", false, 1656, false, "gH6kU4vq-vY", "https://www.youtube.com/watch?v=gH6kU4vq-vY", 5, "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", false, false, 7, [], 96, ~U[2026-10-14 10:30:10Z], ~U[2026-10-17 03:05:50Z], ~U[2026-10-17 03:05:50Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", 1656, false, "gH6kU4vq-vY", "https://www.youtube.com/watch?v=gH6kU4vq-vY", "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", false, 7, ~U[2026-10-14 10:30:10Z]] 03:05:50.167 [debug] QUERY OK source="sources" db=0.3ms idle=27.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] 03:05:50.167 [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] 03:05:50.168 [debug] QUERY OK source="media_items" db=0.3ms idle=9.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 [50087] 03:05:50.168 [debug] Current batch of media processed. Will check again in 1000ms 03:05:51.168 [debug] Current batch of media processed. Will check again in 1000ms 03:05:52.170 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 1182, "filename" => "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", "id" => "AjM6b8kACtk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=AjM6b8kACtk", "playlist_index" => 6, "timestamp" => 1791970229, "title" => "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", "upload_date" => "20261014"} 03:05:52.170 [debug] QUERY OK source="sources" db=0.2ms idle=180.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:52.170 [debug] QUERY OK source="sources" db=0.0ms idle=180.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:05:52.178 [debug] QUERY OK source="media_items" db=7.2ms idle=181.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 09:30:29Z], 7] 03:05:52.180 [debug] QUERY OK source="media_items" db=1.2ms idle=188.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", "bd36dd4a-9d0a-4762-b01e-70774bfe3dae", false, 1182, false, "AjM6b8kACtk", "https://www.youtube.com/watch?v=AjM6b8kACtk", 6, "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", false, false, 7, [], 96, ~U[2026-10-14 09:30:29Z], ~U[2026-10-17 03:05:52Z], ~U[2026-10-17 03:05:52Z], "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", 1182, false, "AjM6b8kACtk", "https://www.youtube.com/watch?v=AjM6b8kACtk", "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", false, 7, ~U[2026-10-14 09:30:29Z]] 03:05:52.180 [debug] QUERY OK source="sources" db=0.1ms idle=37.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] 03:05:52.180 [debug] QUERY OK source="media_profiles" db=0.1ms idle=10.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] 03:05:52.181 [debug] QUERY OK source="media_items" db=0.1ms idle=10.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50088] 03:05:52.181 [debug] Current batch of media processed. Will check again in 1000ms 03:05:53.181 [debug] Current batch of media processed. Will check again in 1000ms 03:05:54.183 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 1573, "filename" => "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", "id" => "Y-E5IX2FxHM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Y-E5IX2FxHM", "playlist_index" => 7, "timestamp" => 1791966639, "title" => "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", "upload_date" => "20261014"} 03:05:54.184 [debug] QUERY OK source="sources" db=0.2ms idle=193.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:54.184 [debug] QUERY OK source="sources" db=0.1ms idle=194.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:05:54.193 [debug] QUERY OK source="media_items" db=8.2ms idle=194.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 08:30:39Z], 7] 03:05:54.195 [debug] QUERY OK source="media_items" db=1.2ms idle=203.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", "d327cf9b-597d-4f50-b07b-1361a1d6fdc8", false, 1573, false, "Y-E5IX2FxHM", "https://www.youtube.com/watch?v=Y-E5IX2FxHM", 7, "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", false, false, 7, [], 96, ~U[2026-10-14 08:30:39Z], ~U[2026-10-17 03:05:54Z], ~U[2026-10-17 03:05:54Z], "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", 1573, false, "Y-E5IX2FxHM", "https://www.youtube.com/watch?v=Y-E5IX2FxHM", "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", false, 7, ~U[2026-10-14 08:30:39Z]] 03:05:54.196 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [7] 03:05:54.196 [debug] QUERY OK source="media_profiles" db=0.1ms idle=12.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] 03:05:54.197 [debug] QUERY OK source="media_items" db=0.2ms idle=12.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50089] 03:05:54.197 [debug] Current batch of media processed. Will check again in 1000ms 03:05:55.197 [debug] Current batch of media processed. Will check again in 1000ms 03:05:56.199 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "duration" => 1670, "filename" => "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", "id" => "PQ-u5Qb3YEU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", "playlist_index" => 8, "timestamp" => 1791885931, "title" => "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", "upload_date" => "20261013"} 03:05:56.199 [debug] QUERY OK source="sources" db=0.2ms idle=209.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:56.200 [debug] QUERY OK source="sources" db=0.1ms idle=210.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:05:56.208 [debug] QUERY OK source="media_items" db=7.5ms idle=210.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-13 10:05:31Z], 7] 03:05:56.209 [debug] QUERY OK source="media_items" db=0.9ms idle=218.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", "8435ba2f-a5e2-44fa-90fe-f5272ff1ec80", false, 1670, false, "PQ-u5Qb3YEU", "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", 8, "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", false, false, 7, [], 98, ~U[2026-10-13 10:05:31Z], ~U[2026-10-17 03:05:56Z], ~U[2026-10-17 03:05:56Z], "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", 1670, false, "PQ-u5Qb3YEU", "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", false, 7, ~U[2026-10-13 10:05:31Z]] 03:05:56.209 [debug] QUERY OK source="sources" db=0.1ms idle=61.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] 03:05:56.210 [debug] QUERY OK source="media_profiles" db=0.2ms idle=10.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:05:56.210 [debug] QUERY OK source="media_items" db=0.1ms idle=10.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49878] 03:05:56.210 [debug] Current batch of media processed. Will check again in 1000ms 03:05:57.211 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 3255, "filename" => "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", "id" => "k4Lj4HIwMDo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=k4Lj4HIwMDo", "playlist_index" => 9, "timestamp" => 1791676823, "title" => "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", "upload_date" => "20261011"} 03:05:57.211 [debug] QUERY OK source="sources" db=0.1ms idle=1001.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:57.211 [debug] QUERY OK source="sources" db=0.0ms idle=1001.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] 03:05:57.219 [debug] QUERY OK source="media_items" db=7.9ms idle=1001.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-11 00:00:23Z], 7] 03:05:57.223 [debug] QUERY OK source="media_items" db=3.2ms idle=1009.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", "97cd1e73-2d87-42b7-98f4-0b6ef493cfed", false, 3255, false, "k4Lj4HIwMDo", "https://www.youtube.com/watch?v=k4Lj4HIwMDo", 9, "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", false, false, 7, [], 98, ~U[2026-10-11 00:00:23Z], ~U[2026-10-17 03:05:57Z], ~U[2026-10-17 03:05:57Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", 3255, false, "k4Lj4HIwMDo", "https://www.youtube.com/watch?v=k4Lj4HIwMDo", "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", false, 7, ~U[2026-10-11 00:00:23Z]] 03:05:57.224 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=73.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] 03:05:57.225 [debug] QUERY OK source="media_profiles" db=0.1ms idle=13.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] 03:05:57.225 [debug] QUERY OK source="media_items" db=0.5ms idle=13.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49257] 03:05:57.225 [debug] Current batch of media processed. Will check again in 1000ms 03:05:58.226 [debug] Current batch of media processed. Will check again in 1000ms 03:05:59.228 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "duration" => 1013, "filename" => "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", "id" => "mKiplSfm_yM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=mKiplSfm_yM", "playlist_index" => 10, "timestamp" => 1791598661, "title" => "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", "upload_date" => "20261010"} 03:05:59.228 [debug] QUERY OK source="sources" db=0.1ms idle=238.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:05:59.229 [debug] QUERY OK source="sources" db=0.1ms idle=238.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] 03:05:59.241 [debug] QUERY OK source="media_items" db=12.2ms idle=239.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 02:17:41Z], 7] 03:05:59.242 [debug] QUERY OK source="media_items" db=0.9ms idle=251.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", "ac5b1266-0640-4738-93e3-f6c2eb9d3283", false, 1013, false, "mKiplSfm_yM", "https://www.youtube.com/watch?v=mKiplSfm_yM", 10, "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", false, false, 7, [], 97, ~U[2026-10-10 02:17:41Z], ~U[2026-10-17 03:05:59Z], ~U[2026-10-17 03:05:59Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", 1013, false, "mKiplSfm_yM", "https://www.youtube.com/watch?v=mKiplSfm_yM", "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", false, 7, ~U[2026-10-10 02:17:41Z]] 03:05:59.243 [debug] QUERY OK source="sources" db=0.2ms idle=89.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:05:59.243 [debug] QUERY OK source="media_profiles" db=0.2ms idle=14.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] 03:05:59.244 [debug] QUERY OK source="media_items" db=0.1ms idle=14.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 [49047] 03:05:59.244 [debug] Current batch of media processed. Will check again in 1000ms 03:06:00.245 [debug] Current batch of media processed. Will check again in 1000ms 03:06:00.872 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:06:01.246 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "duration" => 1104, "filename" => "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", "id" => "nttINf-CD18", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=nttINf-CD18", "playlist_index" => 11, "timestamp" => 1791590439, "title" => "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", "upload_date" => "20261010"} 03:06:01.246 [debug] QUERY OK source="sources" db=0.3ms idle=374.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:01.247 [debug] QUERY OK source="sources" db=0.1ms idle=257.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:01.255 [debug] QUERY OK source="media_items" db=7.5ms idle=257.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 00:00:39Z], 7] 03:06:01.256 [debug] QUERY OK source="media_items" db=0.8ms idle=265.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", "743124d4-b625-4590-b788-196ab2f2aba0", false, 1104, false, "nttINf-CD18", "https://www.youtube.com/watch?v=nttINf-CD18", 11, "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", false, false, 7, [], 97, ~U[2026-10-10 00:00:39Z], ~U[2026-10-17 03:06:01Z], ~U[2026-10-17 03:06:01Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", 1104, false, "nttINf-CD18", "https://www.youtube.com/watch?v=nttINf-CD18", "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", false, 7, ~U[2026-10-10 00:00:39Z]] 03:06:01.256 [debug] QUERY OK source="sources" db=0.2ms idle=99.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] 03:06:01.257 [debug] QUERY OK source="media_profiles" db=0.2ms idle=10.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:06:01.257 [debug] QUERY OK source="media_items" db=0.2ms idle=10.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49048] 03:06:01.257 [debug] Current batch of media processed. Will check again in 1000ms 03:06:02.258 [debug] Current batch of media processed. Will check again in 1000ms 03:06:02.563 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ViVdiknpn04 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a3/aa/a3aa2fc4a363519783ea6adaae5797cfa36661b004cad8388de3a6b425d49eeb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:06:02.625 [debug] Running yt-dlp command for action: download_thumbnail 03:06:02.625 [debug] QUERY OK source="settings" db=0.1ms idle=1369.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:02.626 [debug] QUERY OK source="settings" db=0.0ms idle=1368.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:02.626 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:06:02.626 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ViVdiknpn04 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50510/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ba/5c/ba5cd5f90ef4705b9a34d26b06160c302f07bc4442fe9eee6907995792352ae3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:06:03.260 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "duration" => 2889, "filename" => "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", "id" => "UQH8C5tAN8c", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=UQH8C5tAN8c", "playlist_index" => 12, "timestamp" => 1791518428, "title" => "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", "upload_date" => "20261009"} 03:06:03.261 [debug] QUERY OK source="sources" db=0.7ms idle=634.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:03.262 [debug] QUERY OK source="sources" db=0.8ms idle=635.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:03.272 [debug] QUERY OK source="media_items" db=10.0ms queue=0.1ms idle=636.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 04:00:28Z], 7] 03:06:03.275 [debug] QUERY OK source="media_items" db=1.5ms idle=283.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", "1a2cdbae-2275-4d0f-9a4b-32674c303948", false, 2889, false, "UQH8C5tAN8c", "https://www.youtube.com/watch?v=UQH8C5tAN8c", 12, "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", false, false, 7, [], 97, ~U[2026-10-09 04:00:28Z], ~U[2026-10-17 03:06:03Z], ~U[2026-10-17 03:06:03Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", 2889, false, "UQH8C5tAN8c", "https://www.youtube.com/watch?v=UQH8C5tAN8c", "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", false, 7, ~U[2026-10-09 04:00:28Z]] 03:06:03.276 [debug] QUERY OK source="sources" db=0.9ms idle=115.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] 03:06:03.277 [debug] QUERY OK source="media_profiles" db=0.7ms 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] 03:06:03.278 [debug] QUERY OK source="media_items" db=0.2ms idle=15.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 [49049] 03:06:03.278 [debug] Current batch of media processed. Will check again in 1000ms 03:06:04.037 [info] {"source":"oban","duration":1883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:06:04.279 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "duration" => 735, "filename" => "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", "id" => "kiDCF84SER0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kiDCF84SER0", "playlist_index" => 13, "timestamp" => 1791504310, "title" => "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", "upload_date" => "20261009"} 03:06:04.279 [debug] QUERY OK source="sources" db=0.2ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:04.280 [debug] QUERY OK source="sources" db=0.1ms idle=1002.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:04.287 [debug] QUERY OK source="media_items" db=7.6ms idle=1001.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 00:05:10Z], 7] 03:06:04.926 [debug] QUERY OK source="media_items" db=637.7ms idle=250.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", "ab0ee161-d2c7-4500-b846-18d1ac9f93d2", false, 735, false, "kiDCF84SER0", "https://www.youtube.com/watch?v=kiDCF84SER0", 13, "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", false, false, 7, [], 97, ~U[2026-10-09 00:05:10Z], ~U[2026-10-17 03:06:04Z], ~U[2026-10-17 03:06:04Z], "📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", 735, false, "kiDCF84SER0", "https://www.youtube.com/watch?v=kiDCF84SER0", "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", false, 7, ~U[2026-10-09 00:05:10Z]] 03:06:04.927 [debug] QUERY OK source="sources" db=0.7ms idle=764.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] 03:06:04.928 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=648.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] 03:06:04.928 [debug] QUERY OK source="media_items" db=0.1ms idle=648.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 [48839] 03:06:04.929 [debug] Current batch of media processed. Will check again in 1000ms 03:06:05.548 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ViVdiknpn04 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50510/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ba/5c/ba5cd5f90ef4705b9a34d26b06160c302f07bc4442fe9eee6907995792352ae3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:06:05.549 [debug] QUERY OK db=0.0ms idle=623.2ms begin [] 03:06:05.550 [debug] QUERY OK source="media_items" db=0.9ms UPDATE "media_items" SET "media_filepath" = ?, "media_downloaded_at" = ?, "metadata_filepath" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/이효석아카데미/2026-10-17 국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?/국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면? [ViVdiknpn04].mp4", ~U[2026-10-17 03:06:02Z], "/downloads/이효석아카데미/2026-10-17 국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?/국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면? [ViVdiknpn04].info.json", "/downloads/이효석아카데미/2026-10-17 국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?/국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면? [ViVdiknpn04]-thumb.jpg", ~U[2026-10-17 03:06:05Z], 50510] 03:06:05.551 [debug] QUERY OK source="media_metadata" db=0.3ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/50510/metadata.json.gz", "/config/metadata/media_items/50510/thumbnail.jpg", 50510, ~U[2026-10-17 03:06:05Z], ~U[2026-10-17 03:06:05Z]] 03:06:05.726 [debug] QUERY OK db=174.8ms commit [] 03:06:05.727 [debug] QUERY OK source="media_items" db=0.6ms idle=799.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [364413860, ~U[2026-10-17 03:06:05Z], 50510] 03:06:05.727 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:06:05.727 [info] {"args":{"id":50510},"id":16330,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":22603434,"event":"job:stop","queue_time":122908,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:06:05.930 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "duration" => 2941, "filename" => "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", "id" => "Wd2F-sEasVw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Wd2F-sEasVw", "playlist_index" => 14, "timestamp" => 1791360038, "title" => "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", "upload_date" => "20261007"} 03:06:05.931 [debug] QUERY OK source="sources" db=0.6ms idle=766.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:05.931 [debug] QUERY OK source="sources" db=0.4ms idle=205.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] 03:06:05.940 [debug] QUERY OK source="media_items" db=7.9ms idle=204.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 08:00:38Z], 7] 03:06:05.942 [debug] QUERY OK source="media_items" db=1.3ms idle=212.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", "4b9445e0-4f36-40eb-8175-1f947e85982b", false, 2941, false, "Wd2F-sEasVw", "https://www.youtube.com/watch?v=Wd2F-sEasVw", 14, "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", false, false, 7, [], 98, ~U[2026-10-07 08:00:38Z], ~U[2026-10-17 03:06:05Z], ~U[2026-10-17 03:06:05Z], "📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", 2941, false, "Wd2F-sEasVw", "https://www.youtube.com/watch?v=Wd2F-sEasVw", "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", false, 7, ~U[2026-10-07 08:00:38Z]] 03:06:05.942 [debug] QUERY OK source="sources" db=0.4ms idle=207.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] 03:06:05.943 [debug] QUERY OK source="media_profiles" db=0.2ms idle=11.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] 03:06:05.943 [debug] QUERY OK source="media_items" db=0.2ms idle=11.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48633] 03:06:05.943 [debug] Current batch of media processed. Will check again in 1000ms 03:06:06.743 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XMb_fg0lsYE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/eb/00/eb00eefda059e1ebd73dc4d3acc0b633235ce1d422a4a346dc82f65f5f48c2f1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:06:06.781 [debug] Running yt-dlp command for action: download_thumbnail 03:06:06.782 [debug] QUERY OK source="settings" db=0.1ms idle=840.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:06.783 [debug] QUERY OK source="settings" db=0.2ms idle=840.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:06.783 [debug] QUERY OK source="settings" db=0.1ms idle=840.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:06.783 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XMb_fg0lsYE --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50511/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/94/59/9459086fb287c370f1b56d4d91fdd12e82b06bdae3805b6ab02af9469bdaf1c9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:06:06.944 [debug] Current batch of media processed. Will check again in 1000ms 03:06:07.946 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 1647, "filename" => "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", "id" => "ZndXfOdGgkI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ZndXfOdGgkI", "playlist_index" => 15, "timestamp" => 1791277217, "title" => "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", "upload_date" => "20261006"} 03:06:07.946 [debug] QUERY OK source="sources" db=0.2ms idle=1163.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:07.947 [debug] QUERY OK source="sources" db=0.1ms idle=1163.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] 03:06:07.954 [debug] QUERY OK source="media_items" db=7.0ms idle=1163.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 09:00:17Z], 7] 03:06:07.955 [debug] QUERY OK source="media_items" db=0.8ms idle=964.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", "cac58209-b46a-4281-8951-9b72970934e5", false, 1647, false, "ZndXfOdGgkI", "https://www.youtube.com/watch?v=ZndXfOdGgkI", 15, "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", false, false, 7, [], 97, ~U[2026-10-06 09:00:17Z], ~U[2026-10-17 03:06:07Z], ~U[2026-10-17 03:06:07Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", 1647, false, "ZndXfOdGgkI", "https://www.youtube.com/watch?v=ZndXfOdGgkI", "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", false, 7, ~U[2026-10-06 09:00:17Z]] 03:06:07.956 [debug] QUERY OK source="sources" db=0.1ms idle=761.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] 03:06:07.956 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:06:07.956 [debug] QUERY OK source="media_items" db=0.1ms idle=9.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 [48425] 03:06:07.956 [debug] Current batch of media processed. Will check again in 1000ms 03:06:08.958 [debug] Current batch of media processed. Will check again in 1000ms 03:06:09.349 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XMb_fg0lsYE --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50511/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/94/59/9459086fb287c370f1b56d4d91fdd12e82b06bdae3805b6ab02af9469bdaf1c9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:06:09.349 [debug] QUERY OK db=0.0ms idle=359.7ms begin [] 03:06:09.350 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_filepath" = ?, "media_downloaded_at" = ?, "metadata_filepath" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", ~U[2026-10-17 03:06:06Z], "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].info.json", "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE]-thumb.jpg", ~U[2026-10-17 03:06:09Z], 50511] 03:06:09.350 [debug] QUERY OK source="media_metadata" db=0.3ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/50511/metadata.json.gz", "/config/metadata/media_items/50511/thumbnail.jpg", 50511, ~U[2026-10-17 03:06:09Z], ~U[2026-10-17 03:06:09Z]] 03:06:09.351 [debug] QUERY OK db=0.2ms commit [] 03:06:09.352 [debug] QUERY OK source="media_items" db=0.6ms idle=361.5ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [513075808, ~U[2026-10-17 03:06:09Z], 50511] 03:06:09.352 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:06:09.353 [info] {"args":{"id":50511},"id":16331,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":24215787,"event":"job:stop","queue_time":135931,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:06:09.959 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 1649, "filename" => "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", "id" => "axhb9H_ic3I", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=axhb9H_ic3I", "playlist_index" => 16, "timestamp" => 1791273609, "title" => "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", "upload_date" => "20261006"} 03:06:09.959 [debug] QUERY OK source="sources" db=0.3ms idle=760.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:09.960 [debug] QUERY OK source="sources" db=0.2ms idle=608.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] 03:06:09.968 [debug] QUERY OK source="media_items" db=7.5ms idle=608.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 08:00:09Z], 7] 03:06:09.970 [debug] QUERY OK source="media_items" db=1.1ms idle=615.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", "a0459fe2-163d-4637-b495-6a69f720dcd4", false, 1649, false, "axhb9H_ic3I", "https://www.youtube.com/watch?v=axhb9H_ic3I", 16, "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", false, false, 7, [], 97, ~U[2026-10-06 08:00:09Z], ~U[2026-10-17 03:06:09Z], ~U[2026-10-17 03:06:09Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", 1649, false, "axhb9H_ic3I", "https://www.youtube.com/watch?v=axhb9H_ic3I", "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", false, 7, ~U[2026-10-06 08:00:09Z]] 03:06:09.970 [debug] QUERY OK source="sources" db=0.2ms idle=610.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] 03:06:09.970 [debug] QUERY OK source="media_profiles" db=0.1ms idle=10.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] 03:06:09.971 [debug] QUERY OK source="media_items" db=0.1ms idle=10.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48426] 03:06:09.971 [debug] Current batch of media processed. Will check again in 1000ms 03:06:10.972 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "duration" => 519, "filename" => "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", "id" => "dgKLdPKNgB0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=dgKLdPKNgB0", "playlist_index" => 17, "timestamp" => 1791244144, "title" => "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", "upload_date" => "20261005"} 03:06:10.972 [debug] QUERY OK source="sources" db=0.3ms idle=1002.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:10.973 [debug] QUERY OK source="sources" db=0.2ms idle=1002.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:10.981 [debug] QUERY OK source="media_items" db=7.5ms idle=1002.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 23:49:04Z], 7] 03:06:10.982 [debug] QUERY OK source="media_items" db=0.8ms idle=1010.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", "6ea12c47-08d3-4496-9f62-224f3bdafcf4", false, 519, false, "dgKLdPKNgB0", "https://www.youtube.com/watch?v=dgKLdPKNgB0", 17, "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", false, false, 7, [], 98, ~U[2026-10-05 23:49:04Z], ~U[2026-10-17 03:06:10Z], ~U[2026-10-17 03:06:10Z], "엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", 519, false, "dgKLdPKNgB0", "https://www.youtube.com/watch?v=dgKLdPKNgB0", "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", false, 7, ~U[2026-10-05 23:49:04Z]] 03:06:10.983 [debug] QUERY OK source="sources" db=0.3ms idle=782.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] 03:06:10.984 [debug] QUERY OK source="media_profiles" db=0.2ms idle=10.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] 03:06:10.984 [debug] QUERY OK source="media_items" db=0.1ms idle=10.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48219] 03:06:10.984 [debug] Current batch of media processed. Will check again in 1000ms 03:06:11.984 [debug] Current batch of media processed. Will check again in 1000ms 03:06:12.986 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "duration" => 680, "filename" => "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", "id" => "XIEitZGI4dg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=XIEitZGI4dg", "playlist_index" => 18, "timestamp" => 1791100817, "title" => "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", "upload_date" => "20261004"} 03:06:12.987 [debug] QUERY OK source="sources" db=0.2ms idle=996.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:12.987 [debug] QUERY OK source="sources" db=0.0ms idle=997.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] 03:06:12.994 [debug] QUERY OK source="media_items" db=7.0ms idle=997.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 08:00:17Z], 7] 03:06:12.996 [debug] QUERY OK source="media_items" db=0.9ms idle=1005.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", "2e86425e-d0f0-4aea-90db-320148743c6b", false, 680, false, "XIEitZGI4dg", "https://www.youtube.com/watch?v=XIEitZGI4dg", 18, "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", false, false, 7, [], 97, ~U[2026-10-04 08:00:17Z], ~U[2026-10-17 03:06:12Z], ~U[2026-10-17 03:06:12Z], "♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", 680, false, "XIEitZGI4dg", "https://www.youtube.com/watch?v=XIEitZGI4dg", "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", false, 7, ~U[2026-10-04 08:00:17Z]] 03:06:12.996 [debug] QUERY OK source="sources" db=0.2ms idle=792.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] 03:06:12.997 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.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] 03:06:12.997 [debug] QUERY OK source="media_items" db=0.2ms idle=9.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48015] 03:06:12.997 [debug] Current batch of media processed. Will check again in 1000ms 03:06:13.997 [debug] Current batch of media processed. Will check again in 1000ms 03:06:14.999 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "duration" => 1202, "filename" => "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", "id" => "f1Z6B9NRpNA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=f1Z6B9NRpNA", "playlist_index" => 19, "timestamp" => 1791072012, "title" => "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", "upload_date" => "20261004"} 03:06:14.999 [debug] QUERY OK source="sources" db=0.2ms idle=792.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:15.000 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:15.006 [debug] QUERY OK source="media_items" db=6.5ms idle=10.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 00:00:12Z], 7] 03:06:15.008 [debug] QUERY OK source="media_items" db=0.8ms idle=17.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", "730f984f-ab00-4dba-a334-871ac0b23e0a", false, 1202, false, "f1Z6B9NRpNA", "https://www.youtube.com/watch?v=f1Z6B9NRpNA", 19, "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", false, false, 7, [], 97, ~U[2026-10-04 00:00:12Z], ~U[2026-10-17 03:06:15Z], ~U[2026-10-17 03:06:15Z], "🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", 1202, false, "f1Z6B9NRpNA", "https://www.youtube.com/watch?v=f1Z6B9NRpNA", "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", false, 7, ~U[2026-10-04 00:00:12Z]] 03:06:15.008 [debug] QUERY OK source="sources" db=0.1ms idle=18.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] 03:06:15.008 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.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] 03:06:15.009 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [47809] 03:06:15.009 [debug] Current batch of media processed. Will check again in 1000ms 03:06:16.010 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "duration" => 1202, "filename" => "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", "id" => "ALvXoiFY6zM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ALvXoiFY6zM", "playlist_index" => 20, "timestamp" => 1790985624, "title" => "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", "upload_date" => "20261003"} 03:06:16.010 [debug] QUERY OK source="sources" db=0.1ms idle=1002.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:16.010 [debug] QUERY OK source="sources" db=0.0ms idle=1002.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] 03:06:16.018 [debug] QUERY OK source="media_items" db=7.3ms idle=1002.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 00:00:24Z], 7] 03:06:16.025 [debug] QUERY OK source="media_items" db=5.9ms idle=1009.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", "dea881ae-c5c3-4eeb-9a6c-5d46b1183d8a", false, 1202, false, "ALvXoiFY6zM", "https://www.youtube.com/watch?v=ALvXoiFY6zM", 20, "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", false, false, 7, [], 98, ~U[2026-10-03 00:00:24Z], ~U[2026-10-17 03:06:16Z], ~U[2026-10-17 03:06:16Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", 1202, false, "ALvXoiFY6zM", "https://www.youtube.com/watch?v=ALvXoiFY6zM", "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", false, 7, ~U[2026-10-03 00:00:24Z]] 03:06:16.025 [debug] QUERY OK source="sources" db=0.2ms idle=816.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] 03:06:16.026 [debug] QUERY OK source="media_profiles" db=0.1ms idle=15.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] 03:06:16.026 [debug] QUERY OK source="media_items" db=0.1ms idle=15.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47600] 03:06:16.026 [debug] Current batch of media processed. Will check again in 1000ms 03:06:17.026 [debug] Current batch of media processed. Will check again in 1000ms 03:06:18.028 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n\n🗓️ 촬영일 : 10.01\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록", "duration" => 1573, "filename" => "/downloads/이효석아카데미/2026-10-02 우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]/우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부] [LnyC13ByVQw].mp4", "id" => "LnyC13ByVQw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=LnyC13ByVQw", "playlist_index" => 21, "timestamp" => 1790931616, "title" => "우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]", "upload_date" => "20261002"} 03:06:18.029 [debug] QUERY OK source="sources" db=0.6ms idle=816.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:18.029 [debug] QUERY OK source="sources" db=0.1ms idle=39.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] 03:06:18.036 [debug] QUERY OK source="media_items" db=7.1ms idle=39.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-02 09:00:16Z], 7] 03:06:18.038 [debug] QUERY OK source="media_items" db=1.0ms idle=47.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n\n🗓️ 촬영일 : 10.01\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록", "우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]", "8d9b8294-6a8e-41a5-be58-03d8a89c3158", false, 1573, false, "LnyC13ByVQw", "https://www.youtube.com/watch?v=LnyC13ByVQw", 21, "/downloads/이효석아카데미/2026-10-02 우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]/우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부] [LnyC13ByVQw].mp4", false, false, 7, [], 97, ~U[2026-10-02 09:00:16Z], ~U[2026-10-17 03:06:18Z], ~U[2026-10-17 03:06:18Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n\n🗓️ 촬영일 : 10.01\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록", "우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]", 1573, false, "LnyC13ByVQw", "https://www.youtube.com/watch?v=LnyC13ByVQw", "/downloads/이효석아카데미/2026-10-02 우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]/우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부] [LnyC13ByVQw].mp4", false, 7, ~U[2026-10-02 09:00:16Z]] 03:06:18.038 [debug] QUERY OK source="sources" db=0.2ms idle=48.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] 03:06:18.039 [debug] QUERY OK source="media_profiles" db=0.4ms idle=9.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] 03:06:18.039 [debug] QUERY OK source="media_items" db=0.1ms idle=10.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47601] 03:06:18.039 [debug] Current batch of media processed. Will check again in 1000ms 03:06:19.040 [debug] Current batch of media processed. Will check again in 1000ms 03:06:19.501 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@hs_academy --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/77/d7/77d7a3ed1035ec22882625100bbfc906d847305d52a4e3c1a80916bb25cbef31.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/5c/98/5c988ab582be002afdf982c16585731d4e5e89f4363798814620b837c698378f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 03:06:19.503 [debug] Gracefully stopping file follower 03:06:19.503 [debug] QUERY OK source="sources" db=0.1ms idle=1464.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:19.503 [debug] QUERY OK source="sources" db=0.1ms idle=1464.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] 03:06:19.511 [debug] QUERY OK source="media_items" db=7.0ms idle=1464.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-17 01:43:51Z], 7] 03:06:19.512 [debug] QUERY OK source="media_items" db=0.8ms idle=1298.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?", "0d618ad8-c622-46e3-a90b-37a38d3a67f8", false, 1098, false, "ViVdiknpn04", "https://www.youtube.com/watch?v=ViVdiknpn04", 1, "/downloads/이효석아카데미/2026-10-17 국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?/국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면? [ViVdiknpn04].mp4", false, false, 7, [], 98, ~U[2026-10-17 01:43:51Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?", 1098, false, "ViVdiknpn04", "https://www.youtube.com/watch?v=ViVdiknpn04", "/downloads/이효석아카데미/2026-10-17 국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면?/국민연금만으론 부족한 생활비...커버드콜 ETF로 월 200만원을 준비하려면? [ViVdiknpn04].mp4", false, 7, ~U[2026-10-17 01:43:51Z]] 03:06:19.513 [debug] QUERY OK source="sources" db=0.2ms idle=298.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.520 [debug] QUERY OK source="media_items" db=6.9ms idle=9.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 08:00:23Z], 7] 03:06:19.521 [debug] QUERY OK source="media_items" db=0.6ms idle=16.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", "c3a11885-0301-40d9-a275-8923a4f0e4f0", false, 1759, false, "XMb_fg0lsYE", "https://www.youtube.com/watch?v=XMb_fg0lsYE", 2, "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", false, false, 7, [], 98, ~U[2026-10-16 08:00:23Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", 1759, false, "XMb_fg0lsYE", "https://www.youtube.com/watch?v=XMb_fg0lsYE", "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", false, 7, ~U[2026-10-16 08:00:23Z]] 03:06:19.522 [debug] QUERY OK source="sources" db=0.7ms idle=10.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.530 [debug] QUERY OK source="media_items" db=7.6ms idle=9.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 08:00:24Z], 7] 03:06:19.531 [debug] QUERY OK source="media_items" db=0.8ms idle=17.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", "8eaee721-546c-47be-b49c-ccf9ee69bf18", false, 1053, false, "xM3Klkc6zAw", "https://www.youtube.com/watch?v=xM3Klkc6zAw", 3, "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", false, false, 7, [], 97, ~U[2026-10-15 08:00:24Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", 1053, false, "xM3Klkc6zAw", "https://www.youtube.com/watch?v=xM3Klkc6zAw", "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", false, 7, ~U[2026-10-15 08:00:24Z]] 03:06:19.532 [debug] QUERY OK source="sources" db=0.8ms idle=11.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.539 [debug] QUERY OK source="media_items" db=6.6ms idle=11.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 00:24:24Z], 7] 03:06:19.540 [debug] QUERY OK source="media_items" db=0.7ms idle=17.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", "6df7d5cd-9757-46b8-b080-963334660fae", false, 645, false, "SC6jvx4Nkd8", "https://www.youtube.com/watch?v=SC6jvx4Nkd8", 4, "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", false, false, 7, [], 97, ~U[2026-10-15 00:24:24Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", 645, false, "SC6jvx4Nkd8", "https://www.youtube.com/watch?v=SC6jvx4Nkd8", "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", false, 7, ~U[2026-10-15 00:24:24Z]] 03:06:19.542 [debug] QUERY OK source="sources" db=1.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.549 [debug] QUERY OK source="media_items" db=6.8ms idle=10.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 10:30:10Z], 7] 03:06:19.550 [debug] QUERY OK source="media_items" db=0.6ms idle=17.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", "caf2a90b-9dd0-4e54-81b7-7113a07877bd", false, 1656, false, "gH6kU4vq-vY", "https://www.youtube.com/watch?v=gH6kU4vq-vY", 5, "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", false, false, 7, [], 96, ~U[2026-10-14 10:30:10Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", 1656, false, "gH6kU4vq-vY", "https://www.youtube.com/watch?v=gH6kU4vq-vY", "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", false, 7, ~U[2026-10-14 10:30:10Z]] 03:06:19.551 [debug] QUERY OK source="sources" db=0.6ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.558 [debug] QUERY OK source="media_items" db=6.6ms idle=10.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 09:30:29Z], 7] 03:06:19.559 [debug] QUERY OK source="media_items" db=0.7ms idle=16.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", "6888b1eb-6674-4202-9163-d2d70b8e055f", false, 1182, false, "AjM6b8kACtk", "https://www.youtube.com/watch?v=AjM6b8kACtk", 6, "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", false, false, 7, [], 96, ~U[2026-10-14 09:30:29Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", 1182, false, "AjM6b8kACtk", "https://www.youtube.com/watch?v=AjM6b8kACtk", "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", false, 7, ~U[2026-10-14 09:30:29Z]] 03:06:19.560 [debug] QUERY OK source="sources" db=0.9ms idle=10.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.567 [debug] QUERY OK source="media_items" db=6.7ms idle=10.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 08:30:39Z], 7] 03:06:19.569 [debug] QUERY OK source="media_items" db=0.7ms idle=16.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", "4be4c5c9-64fc-4d74-82ed-e198d9e04dc1", false, 1573, false, "Y-E5IX2FxHM", "https://www.youtube.com/watch?v=Y-E5IX2FxHM", 7, "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", false, false, 7, [], 96, ~U[2026-10-14 08:30:39Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", 1573, false, "Y-E5IX2FxHM", "https://www.youtube.com/watch?v=Y-E5IX2FxHM", "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", false, 7, ~U[2026-10-14 08:30:39Z]] 03:06:19.569 [debug] QUERY OK source="sources" db=0.7ms idle=10.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] 03:06:19.576 [debug] QUERY OK source="media_items" db=6.7ms idle=10.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-13 10:05:31Z], 7] 03:06:19.578 [debug] QUERY OK source="media_items" db=0.8ms idle=16.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", "d75b0d48-7824-4d90-8d98-dc3709a86ba5", false, 1670, false, "PQ-u5Qb3YEU", "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", 8, "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", false, false, 7, [], 98, ~U[2026-10-13 10:05:31Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", 1670, false, "PQ-u5Qb3YEU", "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", false, 7, ~U[2026-10-13 10:05:31Z]] 03:06:19.579 [debug] QUERY OK source="sources" db=0.7ms idle=10.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] 03:06:19.586 [debug] QUERY OK source="media_items" db=6.8ms idle=10.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-11 00:00:23Z], 7] 03:06:19.587 [debug] QUERY OK source="media_items" db=0.7ms idle=16.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", "c6d61340-cb28-44e6-88ca-8fcf60a0b9d4", false, 3255, false, "k4Lj4HIwMDo", "https://www.youtube.com/watch?v=k4Lj4HIwMDo", 9, "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", false, false, 7, [], 98, ~U[2026-10-11 00:00:23Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", 3255, false, "k4Lj4HIwMDo", "https://www.youtube.com/watch?v=k4Lj4HIwMDo", "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", false, 7, ~U[2026-10-11 00:00:23Z]] 03:06:19.588 [debug] QUERY OK source="sources" db=0.7ms idle=11.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.596 [debug] QUERY OK source="media_items" db=7.2ms idle=10.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 02:17:41Z], 7] 03:06:19.597 [debug] QUERY OK source="media_items" db=0.6ms idle=17.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", "ad8a3b42-42a0-426a-a67d-c46309e49e1a", false, 1013, false, "mKiplSfm_yM", "https://www.youtube.com/watch?v=mKiplSfm_yM", 10, "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", false, false, 7, [], 97, ~U[2026-10-10 02:17:41Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", 1013, false, "mKiplSfm_yM", "https://www.youtube.com/watch?v=mKiplSfm_yM", "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", false, 7, ~U[2026-10-10 02:17:41Z]] 03:06:19.598 [debug] QUERY OK source="sources" db=0.7ms idle=11.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.605 [debug] QUERY OK source="media_items" db=7.1ms idle=10.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 00:00:39Z], 7] 03:06:19.607 [debug] QUERY OK source="media_items" db=0.7ms idle=17.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", "2873df84-64c5-4724-a5d2-a3db5c7aea35", false, 1104, false, "nttINf-CD18", "https://www.youtube.com/watch?v=nttINf-CD18", 11, "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", false, false, 7, [], 97, ~U[2026-10-10 00:00:39Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", 1104, false, "nttINf-CD18", "https://www.youtube.com/watch?v=nttINf-CD18", "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", false, 7, ~U[2026-10-10 00:00:39Z]] 03:06:19.608 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.615 [debug] QUERY OK source="media_items" db=6.8ms idle=10.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 04:00:28Z], 7] 03:06:19.616 [debug] QUERY OK source="media_items" db=0.8ms idle=17.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", "cb66124b-e5de-4b20-877b-00395699fe73", false, 2889, false, "UQH8C5tAN8c", "https://www.youtube.com/watch?v=UQH8C5tAN8c", 12, "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", false, false, 7, [], 97, ~U[2026-10-09 04:00:28Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", 2889, false, "UQH8C5tAN8c", "https://www.youtube.com/watch?v=UQH8C5tAN8c", "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", false, 7, ~U[2026-10-09 04:00:28Z]] 03:06:19.617 [debug] QUERY OK source="sources" db=0.9ms idle=11.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.624 [debug] QUERY OK source="media_items" db=6.7ms idle=10.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 00:05:10Z], 7] 03:06:19.626 [debug] QUERY OK source="media_items" db=0.5ms idle=17.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", "e1b31b0c-5d0b-4ee1-b5e8-d0bdcd9fe0fc", false, 735, false, "kiDCF84SER0", "https://www.youtube.com/watch?v=kiDCF84SER0", 13, "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", false, false, 7, [], 97, ~U[2026-10-09 00:05:10Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", 735, false, "kiDCF84SER0", "https://www.youtube.com/watch?v=kiDCF84SER0", "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", false, 7, ~U[2026-10-09 00:05:10Z]] 03:06:19.627 [debug] QUERY OK source="sources" db=0.6ms idle=11.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.634 [debug] QUERY OK source="media_items" db=6.9ms idle=10.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 08:00:38Z], 7] 03:06:19.635 [debug] QUERY OK source="media_items" db=0.8ms idle=16.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", "9e08cd1e-fa0a-43d9-a657-358a8e2a06d7", false, 2941, false, "Wd2F-sEasVw", "https://www.youtube.com/watch?v=Wd2F-sEasVw", 14, "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", false, false, 7, [], 98, ~U[2026-10-07 08:00:38Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", 2941, false, "Wd2F-sEasVw", "https://www.youtube.com/watch?v=Wd2F-sEasVw", "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", false, 7, ~U[2026-10-07 08:00:38Z]] 03:06:19.636 [debug] QUERY OK source="sources" db=0.9ms idle=11.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.645 [debug] QUERY OK source="media_items" db=7.9ms idle=11.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 09:00:17Z], 7] 03:06:19.647 [debug] QUERY OK source="media_items" db=1.8ms idle=18.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", "08390c96-116b-457a-a586-8f97ab1f95a7", false, 1647, false, "ZndXfOdGgkI", "https://www.youtube.com/watch?v=ZndXfOdGgkI", 15, "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", false, false, 7, [], 97, ~U[2026-10-06 09:00:17Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", 1647, false, "ZndXfOdGgkI", "https://www.youtube.com/watch?v=ZndXfOdGgkI", "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", false, 7, ~U[2026-10-06 09:00:17Z]] 03:06:19.648 [debug] QUERY OK source="sources" db=0.9ms idle=13.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] 03:06:19.656 [debug] QUERY OK source="media_items" db=7.8ms idle=13.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 08:00:09Z], 7] 03:06:19.658 [debug] QUERY OK source="media_items" db=0.7ms idle=20.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", "affa166b-310d-4c4f-a2d8-49b993e26b01", false, 1649, false, "axhb9H_ic3I", "https://www.youtube.com/watch?v=axhb9H_ic3I", 16, "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", false, false, 7, [], 97, ~U[2026-10-06 08:00:09Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", 1649, false, "axhb9H_ic3I", "https://www.youtube.com/watch?v=axhb9H_ic3I", "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", false, 7, ~U[2026-10-06 08:00:09Z]] 03:06:19.659 [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" = ?) [7] 03:06:19.666 [debug] QUERY OK source="media_items" db=7.1ms idle=11.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 23:49:04Z], 7] 03:06:19.668 [debug] QUERY OK source="media_items" db=0.8ms idle=18.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", "4502e476-3464-48b1-9e72-8327516693aa", false, 519, false, "dgKLdPKNgB0", "https://www.youtube.com/watch?v=dgKLdPKNgB0", 17, "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", false, false, 7, [], 98, ~U[2026-10-05 23:49:04Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", 519, false, "dgKLdPKNgB0", "https://www.youtube.com/watch?v=dgKLdPKNgB0", "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", false, 7, ~U[2026-10-05 23:49:04Z]] 03:06:19.669 [debug] QUERY OK source="sources" db=0.8ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.676 [debug] QUERY OK source="media_items" db=6.8ms idle=11.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 08:00:17Z], 7] 03:06:19.677 [debug] QUERY OK source="media_items" db=0.8ms idle=17.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", "abbebdf2-3570-49db-9cfe-ca0a6710f00b", false, 680, false, "XIEitZGI4dg", "https://www.youtube.com/watch?v=XIEitZGI4dg", 18, "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", false, false, 7, [], 97, ~U[2026-10-04 08:00:17Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", 680, false, "XIEitZGI4dg", "https://www.youtube.com/watch?v=XIEitZGI4dg", "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", false, 7, ~U[2026-10-04 08:00:17Z]] 03:06:19.678 [debug] QUERY OK source="sources" db=0.8ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.687 [debug] QUERY OK source="media_items" db=7.9ms idle=11.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 00:00:12Z], 7] 03:06:19.688 [debug] QUERY OK source="media_items" db=0.7ms idle=18.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", "b0ad1391-27dc-4cd5-b779-59245c724b0d", false, 1202, false, "f1Z6B9NRpNA", "https://www.youtube.com/watch?v=f1Z6B9NRpNA", 19, "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", false, false, 7, [], 97, ~U[2026-10-04 00:00:12Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", 1202, false, "f1Z6B9NRpNA", "https://www.youtube.com/watch?v=f1Z6B9NRpNA", "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", false, 7, ~U[2026-10-04 00:00:12Z]] 03:06:19.689 [debug] QUERY OK source="sources" db=0.7ms idle=12.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.696 [debug] QUERY OK source="media_items" db=6.6ms idle=11.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 00:00:24Z], 7] 03:06:19.697 [debug] QUERY OK source="media_items" db=0.7ms idle=17.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", "94178116-cde1-42db-8a76-800b8a919778", false, 1202, false, "ALvXoiFY6zM", "https://www.youtube.com/watch?v=ALvXoiFY6zM", 20, "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", false, false, 7, [], 98, ~U[2026-10-03 00:00:24Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", 1202, false, "ALvXoiFY6zM", "https://www.youtube.com/watch?v=ALvXoiFY6zM", "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", false, 7, ~U[2026-10-03 00:00:24Z]] 03:06:19.699 [debug] QUERY OK source="sources" db=0.9ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.706 [debug] QUERY OK source="media_items" db=7.3ms idle=10.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-02 09:00:16Z], 7] 03:06:19.707 [debug] QUERY OK source="media_items" db=0.7ms idle=17.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n\n🗓️ 촬영일 : 10.01\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록", "우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]", "857b8935-aa82-4d49-8a1f-ec436b07ab2a", false, 1573, false, "LnyC13ByVQw", "https://www.youtube.com/watch?v=LnyC13ByVQw", 21, "/downloads/이효석아카데미/2026-10-02 우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]/우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부] [LnyC13ByVQw].mp4", false, false, 7, [], 97, ~U[2026-10-02 09:00:16Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n\n🗓️ 촬영일 : 10.01\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록", "우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]", 1573, false, "LnyC13ByVQw", "https://www.youtube.com/watch?v=LnyC13ByVQw", "/downloads/이효석아카데미/2026-10-02 우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부]/우리가 매일 쓰는 인터넷의 절반이 통째로 사라집니다, 개발자 출신이기에 확신한다고 말한 근거가 따로 있었습니다ㅣ김단테 [2부] [LnyC13ByVQw].mp4", false, 7, ~U[2026-10-02 09:00:16Z]] 03:06:19.708 [debug] QUERY OK source="sources" db=0.8ms idle=11.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:19.717 [debug] QUERY OK source="media_items" db=7.8ms idle=11.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-02 08:00:30Z], 7] 03:06:19.718 [debug] QUERY OK source="media_items" db=1.0ms idle=18.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n\n🗓️ 촬영일 : 10.01\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록", "제 돈 주고 가장 비싼 요금제까지 올려본 이유가 있습니다, 비서가 생긴다는 말이 무슨 뜻인지 직접 겪고 나서야 알았습니다ㅣ김단테 [1부]", "d458dca6-1826-4f71-8411-c897ec8c0f31", false, 1356, false, "sNOPsCq37IA", "https://www.youtube.com/watch?v=sNOPsCq37IA", 22, "/downloads/이효석아카데미/2026-10-02 제 돈 주고 가장 비싼 요금제까지 올려본 이유가 있습니다, 비서가 생긴다는 말이 무슨 뜻인지 직접 겪고 나서야 알았습니다ㅣ김단테 [1부]/제 돈 주고 가장 비싼 요금제까지 올려본 이유가 있습니다, 비서가 생긴다는 말이 무슨 뜻인지 직접 겪고 나서야 알았습니다ㅣ김단테 [1부] [sNOPsCq37IA].mp4", false, false, 7, [], 97, ~U[2026-10-02 08:00:30Z], ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n\n🗓️ 촬영일 : 10.01\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록", "제 돈 주고 가장 비싼 요금제까지 올려본 이유가 있습니다, 비서가 생긴다는 말이 무슨 뜻인지 직접 겪고 나서야 알았습니다ㅣ김단테 [1부]", 1356, false, "sNOPsCq37IA", "https://www.youtube.com/watch?v=sNOPsCq37IA", "/downloads/이효석아카데미/2026-10-02 제 돈 주고 가장 비싼 요금제까지 올려본 이유가 있습니다, 비서가 생긴다는 말이 무슨 뜻인지 직접 겪고 나서야 알았습니다ㅣ김단테 [1부]/제 돈 주고 가장 비싼 요금제까지 올려본 이유가 있습니다, 비서가 생긴다는 말이 무슨 뜻인지 직접 겪고 나서야 알았습니다ㅣ김단테 [1부] [sNOPsCq37IA].mp4", false, 7, ~U[2026-10-02 08:00:30Z]] 03:06:19.719 [debug] QUERY OK source="sources" db=0.7ms idle=12.3ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z], 7] 03:06:19.726 [debug] QUERY OK source="media_items" db=6.6ms idle=11.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 03:06:19.749 [debug] QUERY OK source="media_items" db=6.3ms idle=1.5ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 03:06:19.752 [debug] QUERY OK source="media_items" db=2.2ms idle=7.9ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 03:06:19.752 [info] No notification servers provided for source 7 03:06:19.754 [debug] QUERY OK source="tasks" db=1.0ms idle=10.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16332, 7, ~U[2026-10-17 03:06:19Z], ~U[2026-10-17 03:06:19Z]] 03:06:19.755 [info] {"args":{"id":7},"id":16292,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":40719883,"event":"job:stop","queue_time":460590,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:06:34.040 [info] {"source":"oban","duration":1158,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:07:00.873 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:07:04.041 [info] {"source":"oban","duration":1054,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:07:17.283 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792206437283727217,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:07:17.284 [debug] QUERY OK source="media_items" db=0.3ms idle=1294.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" = ?) [5378] 03:07:17.284 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:07:17.284 [debug] QUERY OK source="sources" db=0.1ms idle=1009.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:07:17.285 [debug] QUERY OK source="media_profiles" db=0.1ms idle=295.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] 03:07:17.285 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [5378] 03:07:17.286 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [5378] 03:07:17.287 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:07:17.287 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:17.287 [debug] QUERY OK source="settings" db=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 [] 03:07:17.288 [debug] Running yt-dlp command for action: get_downloadable_status 03:07:17.322 [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 [] 03:07:17.322 [debug] QUERY OK source="settings" db=0.3ms 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 [] 03:07:17.323 [debug] QUERY OK source="settings" db=0.1ms idle=35.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:17.323 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7b/1c/7b1c5202dd73ac584457e6a32e38b8eaf3ca77aeea493c48cb4456dc6dc10634.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:07:18.763 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7b/1c/7b1c5202dd73ac584457e6a32e38b8eaf3ca77aeea493c48cb4456dc6dc10634.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:07:18.763 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:07:18.764 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1479990,"event":"job:exception","queue_time":778148,"attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:07:21.289 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792206441289326085,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:07:21.289 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792206441289396245,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:07:21.290 [debug] QUERY OK source="media_items" db=0.3ms idle=299.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" = ?) [13649] 03:07:21.290 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:07:21.290 [debug] QUERY OK source="media_items" db=0.7ms idle=1009.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" = ?) [13717] 03:07:21.290 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:07:21.290 [debug] QUERY OK source="sources" db=0.2ms idle=300.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:07:21.291 [debug] QUERY OK source="media_profiles" db=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] 03:07:21.291 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:07:21.291 [debug] QUERY OK source="media_items" db=0.4ms idle=1.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13649] 03:07:21.291 [debug] QUERY OK source="media_profiles" db=0.3ms idle=0.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:07:21.292 [debug] QUERY OK source="media_items" db=0.2ms idle=1.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13717] 03:07:21.319 [debug] QUERY OK source="media_metadata" db=0.2ms idle=27.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" = ?) [13649] 03:07:21.319 [debug] QUERY OK source="media_profiles" db=0.2ms idle=28.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] 03:07:21.320 [debug] QUERY OK source="settings" db=0.1ms idle=28.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:21.320 [debug] QUERY OK source="settings" db=0.1ms idle=28.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:21.621 [debug] Running yt-dlp command for action: get_downloadable_status 03:07:21.621 [debug] QUERY OK source="media_metadata" db=0.2ms idle=329.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" = ?) [13717] 03:07:21.622 [debug] QUERY OK source="media_profiles" db=0.2ms idle=303.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] 03:07:21.622 [debug] QUERY OK source="settings" db=0.1ms idle=302.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:21.622 [debug] QUERY OK source="settings" db=0.2ms idle=303.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:21.623 [debug] QUERY OK source="settings" db=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 [] 03:07:21.623 [debug] QUERY OK source="settings" db=0.2ms idle=302.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:21.623 [debug] QUERY OK source="settings" db=0.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:21.623 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7e/79/7e799a8bb3a6651ae2b98d835ff85b65db8e1edc1eeab1f4911c6d09d3a9b7e8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:07:21.623 [debug] Running yt-dlp command for action: get_downloadable_status 03:07:21.624 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:07:21.624 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:21.624 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:21.624 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/96/f2/96f2dafa323f03dc9e8ed7629abd4a68fc5a6f69b87261509dd6c25e5b6be829.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:07:23.026 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/96/f2/96f2dafa323f03dc9e8ed7629abd4a68fc5a6f69b87261509dd6c25e5b6be829.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:07:23.026 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:07:23.027 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1737685,"event":"job:exception","queue_time":410206,"attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:07:23.064 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7e/79/7e799a8bb3a6651ae2b98d835ff85b65db8e1edc1eeab1f4911c6d09d3a9b7e8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:07:23.064 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:07:23.065 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1775632,"event":"job:exception","queue_time":401449,"attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:07:24.292 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792206444292747442,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:07:24.293 [debug] QUERY OK source="media_items" db=0.3ms idle=1227.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" = ?) [37712] 03:07:24.293 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:07:24.294 [debug] QUERY OK source="sources" db=0.2ms idle=1222.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:07:24.294 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1009.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] 03:07:24.295 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [37712] 03:07:24.320 [debug] QUERY OK source="media_metadata" db=0.1ms idle=27.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" = ?) [37712] 03:07:24.320 [debug] QUERY OK source="media_profiles" db=0.1ms idle=27.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] 03:07:24.321 [debug] QUERY OK source="settings" db=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 [] 03:07:24.321 [debug] QUERY OK source="settings" db=0.0ms idle=26.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:24.321 [debug] Running yt-dlp command for action: get_downloadable_status 03:07:24.322 [debug] QUERY OK source="settings" db=0.0ms idle=26.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:24.322 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:07:24.322 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:07:24.322 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a1/1a/a11a538bd94777069cfc96dfdee1766d6bcaf42a3e778a0f771867d9149a53e4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:07:26.021 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a1/1a/a11a538bd94777069cfc96dfdee1766d6bcaf42a3e778a0f771867d9149a53e4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:07:26.021 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:07:26.022 [debug] QUERY OK source="media_items" db=0.7ms idle=734.3ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n", ~U[2026-10-17 03:07:26Z], 37712] 03:07:26.023 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1730062,"event":"job:exception","queue_time":785413,"attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:07:32.300 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792206452300659871,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:07:32.301 [debug] QUERY OK source="media_items" db=0.1ms idle=310.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" = ?) [1922] 03:07:32.301 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:07:32.301 [debug] QUERY OK source="sources" db=0.1ms idle=311.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:07:32.301 [debug] QUERY OK source="media_profiles" db=0.0ms idle=311.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] 03:07:32.302 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [1922] 03:07:32.346 [debug] QUERY OK source="media_metadata" db=0.1ms idle=45.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" = ?) [1922] 03:07:32.346 [debug] QUERY OK source="media_profiles" db=0.1ms idle=45.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] 03:07:32.347 [debug] QUERY OK source="settings" db=0.0ms idle=45.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:32.347 [debug] QUERY OK source="settings" db=0.1ms idle=45.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:32.347 [debug] Running yt-dlp command for action: get_downloadable_status 03:07:32.384 [debug] QUERY OK source="settings" db=0.1ms idle=81.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:07:32.384 [debug] QUERY OK source="settings" db=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 [] 03:07:32.384 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:07:32.384 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/29/7f/297f7a767e58bcf77771f441ff7be66ed2c9c9279b41e2c557e339012fa66fc6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:07:34.044 [info] {"source":"oban","duration":1206,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:07:34.172 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/29/7f/297f7a767e58bcf77771f441ff7be66ed2c9c9279b41e2c557e339012fa66fc6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:07:34.172 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:07:34.173 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1872352,"event":"job:exception","queue_time":541026,"attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:08:00.874 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:08:04.045 [info] {"source":"oban","duration":1031,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:08:34.048 [info] {"source":"oban","duration":1201,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:09:00.875 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:09:04.049 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:09:34.051 [info] {"source":"oban","duration":1020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:10:00.876 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:10:04.054 [info] {"source":"oban","duration":1482,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:10:34.055 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:11:00.877 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:11:04.056 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:11:34.058 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:11:53.576 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792206713576597433,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:11:53.577 [debug] QUERY OK source="media_items" db=0.2ms idle=456.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [5378] 03:11:53.577 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:11:53.577 [debug] QUERY OK source="sources" db=0.2ms idle=457.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:11:53.577 [debug] QUERY OK source="media_profiles" db=0.1ms idle=457.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] 03:11:53.578 [debug] QUERY OK source="media_items" db=0.2ms idle=7.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 [5378] 03:11:53.578 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [5378] 03:11:53.578 [debug] QUERY OK source="media_profiles" db=0.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] 03:11:53.579 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:11:53.579 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:11:53.579 [debug] Running yt-dlp command for action: get_downloadable_status 03:11:53.642 [debug] QUERY OK source="settings" db=0.1ms idle=64.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:11:53.643 [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 [] 03:11:53.643 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:11:53.643 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9c/01/9c010667054af73e3fec2dfe16f0a49656ac7fe49ac8bbf40addf671d85248d1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:11:54.994 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9c/01/9c010667054af73e3fec2dfe16f0a49656ac7fe49ac8bbf40addf671d85248d1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:11:54.994 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:11:54.995 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1418214,"event":"job:exception","queue_time":812072,"attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:11:59.584 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792206719584686301,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:11:59.585 [debug] QUERY OK source="media_items" db=0.2ms idle=1008.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" = ?) [13717] 03:11:59.585 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:11:59.585 [debug] QUERY OK source="sources" db=0.2ms idle=465.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" = ?) [3] 03:11:59.586 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=466.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] 03:11:59.586 [debug] QUERY OK source="media_items" db=0.3ms idle=8.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 [13717] 03:11:59.624 [debug] QUERY OK source="media_metadata" db=0.1ms idle=40.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" = ?) [13717] 03:11:59.625 [debug] QUERY OK source="media_profiles" db=0.1ms idle=39.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] 03:11:59.625 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:11:59.625 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:11:59.626 [debug] Running yt-dlp command for action: get_downloadable_status 03:11:59.626 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:11:59.626 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:11:59.626 [debug] QUERY OK source="settings" db=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 [] 03:11:59.626 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/52/be/52be9ea754bfc83b061bdcb184eef7b33bb365820a2b10ecfda3df294b54696f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:12:00.878 [info] {"source":"oban","duration":163,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:12:00.951 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/52/be/52be9ea754bfc83b061bdcb184eef7b33bb365820a2b10ecfda3df294b54696f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:12:00.951 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:12:00.952 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1367351,"event":"job:exception","queue_time":556666,"attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:12:04.061 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:12:07.595 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792206727595073242,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:12:07.595 [debug] QUERY OK source="media_items" db=0.2ms idle=1008.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" = ?) [13649] 03:12:07.595 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:12:07.596 [debug] QUERY OK source="sources" db=0.1ms idle=476.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:12:07.596 [debug] QUERY OK source="media_profiles" db=0.1ms idle=476.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] 03:12:07.596 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [13649] 03:12:07.597 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.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" = ?) [13649] 03:12:07.597 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:12:07.597 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:12:07.598 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:12:07.598 [debug] Running yt-dlp command for action: get_downloadable_status 03:12:07.632 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:12:07.632 [debug] QUERY OK source="settings" db=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 [] 03:12:07.633 [debug] QUERY OK source="settings" db=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 [] 03:12:07.633 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f4/3b/f43b87c1bbe5328f095f6d102114b4f67c52c5a14a75aa3d3cb104a01e883270.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:12:08.965 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f4/3b/f43b87c1bbe5328f095f6d102114b4f67c52c5a14a75aa3d3cb104a01e883270.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:12:08.966 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:12:08.967 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1371167,"event":"job:exception","queue_time":528851,"attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:12:16.605 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792206736605470812,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:12:16.606 [debug] QUERY OK source="media_items" db=0.2ms idle=1008.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" = ?) [37712] 03:12:16.606 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:12:16.606 [debug] QUERY OK source="sources" db=0.1ms idle=486.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:12:16.606 [debug] QUERY OK source="media_profiles" db=0.1ms idle=486.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] 03:12:16.607 [debug] QUERY OK source="media_items" db=0.3ms idle=8.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 [37712] 03:12:16.687 [debug] QUERY OK source="media_metadata" db=0.1ms idle=81.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" = ?) [37712] 03:12:16.687 [debug] QUERY OK source="media_profiles" db=0.1ms idle=81.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] 03:12:16.688 [debug] QUERY OK source="settings" db=0.2ms idle=81.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:12:16.688 [debug] QUERY OK source="settings" db=0.0ms idle=81.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:12:16.688 [debug] Running yt-dlp command for action: get_downloadable_status 03:12:16.728 [debug] QUERY OK source="settings" db=0.1ms idle=120.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:12:16.728 [debug] QUERY OK source="settings" db=0.1ms idle=40.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:12:16.728 [debug] QUERY OK source="settings" db=0.0ms idle=40.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:12:16.728 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0d/34/0d343c87d54acfe9264f3e576da819886cd4d1004071eb63c2fd073cb45934bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:12:18.372 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0d/34/0d343c87d54acfe9264f3e576da819886cd4d1004071eb63c2fd073cb45934bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:12:18.372 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:12:18.372 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1766849,"event":"job:exception","queue_time":581976,"attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:12:20.610 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792206740610764945,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:12:20.611 [debug] QUERY OK source="media_items" db=0.1ms idle=491.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" = ?) [1922] 03:12:20.611 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:12:20.611 [debug] QUERY OK source="sources" db=0.1ms idle=491.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:12:20.611 [debug] QUERY OK source="media_profiles" db=0.0ms idle=491.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] 03:12:20.612 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [1922] 03:12:20.646 [debug] QUERY OK source="media_metadata" db=0.1ms idle=35.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" = ?) [1922] 03:12:20.646 [debug] QUERY OK source="media_profiles" db=0.0ms idle=35.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] 03:12:20.647 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:12:20.647 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:12:20.647 [debug] Running yt-dlp command for action: get_downloadable_status 03:12:20.648 [debug] QUERY OK source="settings" db=0.0ms idle=35.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:12:20.648 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:12:20.648 [debug] QUERY OK source="settings" db=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 [] 03:12:20.648 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/53/07532edb56f2f5e1d739ccb0f260846e4db4dfd69f957bd7c6db2e1c2f74432a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:12:22.354 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/53/07532edb56f2f5e1d739ccb0f260846e4db4dfd69f957bd7c6db2e1c2f74432a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:12:22.354 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:12:22.355 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1744185,"event":"job:exception","queue_time":436799,"attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:12:34.063 [info] {"source":"oban","duration":1162,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:13:00.879 [info] {"source":"oban","duration":304,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:13:04.064 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:13:34.066 [info] {"source":"oban","duration":1024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:14:00.880 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:14:04.068 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:14:34.070 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:15:00.881 [info] {"source":"oban","duration":176,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:15:04.071 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:15:34.073 [info] {"source":"oban","duration":1176,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:16:00.882 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:16:04.389 [info] {"source":"oban","duration":315695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:16:34.390 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:17:00.883 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:17:04.392 [info] {"source":"oban","duration":660,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:17:29.929 [info] {"args":{"id":6},"id":16294,"meta":{},"system_time":1792207049929553378,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:17:29.930 [debug] QUERY OK source="sources" db=0.1ms idle=1543.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] 03:17:29.930 [debug] QUERY OK source="settings" db=0.1ms idle=1544.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:17:29.931 [debug] QUERY OK source="media_items" db=0.6ms idle=1007.8ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 03:17:29.931 [debug] QUERY OK source="media_items" db=0.2ms idle=7.3ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 03:17:29.931 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:29.931 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:17:29.932 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:17:29.932 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 03:17:29.932 [debug] Current batch of media processed. Will check again in 1000ms 03:17:29.932 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:17:29.932 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:17:29.933 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:17:29.933 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLNmdSYZfFnFYr_ZvC8YCnXM5wVZ5i7NjV&si=tpPXEtloWo6vqo3h --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/포모의 HTS 로그인2/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+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/0f/71/0f71de254d6cbef4df574c752b9a10c84be1da2d647014ee593d1ccf372681ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:17:30.932 [debug] Current batch of media processed. Will check again in 1000ms 03:17:31.933 [debug] Current batch of media processed. Will check again in 1000ms 03:17:32.934 [debug] Current batch of media processed. Will check again in 1000ms 03:17:33.936 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1655, "filename" => "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", "id" => "niaLYJRZ7rA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=niaLYJRZ7rA", "playlist_index" => 1, "timestamp" => 1790326820, "title" => "내 종목만 안 오르는 진짜 이유를 찾자!", "upload_date" => "20260925"} 03:17:33.936 [debug] QUERY OK source="sources" db=0.2ms idle=550.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:33.937 [debug] QUERY OK source="sources" db=0.2ms idle=551.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] 03:17:33.937 [debug] QUERY OK source="media_items" db=0.5ms idle=551.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-25 09:00:20Z], 6] 03:17:33.939 [debug] QUERY OK source="media_items" db=1.1ms idle=552.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "내 종목만 안 오르는 진짜 이유를 찾자!", "2e82170b-d567-43aa-9c4f-b7cc71d2a2ff", false, 1655, false, "niaLYJRZ7rA", "https://www.youtube.com/watch?v=niaLYJRZ7rA", 1, "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", false, false, 6, [], 1, ~U[2026-09-25 09:00:20Z], ~U[2026-10-17 03:17:33Z], ~U[2026-10-17 03:17:33Z], "#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "내 종목만 안 오르는 진짜 이유를 찾자!", 1655, false, "niaLYJRZ7rA", "https://www.youtube.com/watch?v=niaLYJRZ7rA", "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", false, 6, ~U[2026-09-25 09:00:20Z]] 03:17:33.939 [debug] QUERY OK source="sources" db=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" = ?) [6] 03:17:33.940 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:17:33.940 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [45563] 03:17:33.940 [debug] Current batch of media processed. Will check again in 1000ms 03:17:34.393 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:17:34.941 [debug] Current batch of media processed. Will check again in 1000ms 03:17:35.942 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2954, "filename" => "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", "id" => "4nSxuddnkXk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4nSxuddnkXk", "playlist_index" => 2, "timestamp" => 1789117227, "title" => "조건검색식, 기초부터 실전 매매 세팅까지!", "upload_date" => "20260911"} 03:17:35.942 [debug] QUERY OK source="sources" db=0.1ms idle=1013.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:35.943 [debug] QUERY OK source="sources" db=0.0ms idle=557.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] 03:17:35.943 [debug] QUERY OK source="media_items" db=0.4ms idle=557.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-11 09:00:27Z], 6] 03:17:35.945 [debug] QUERY OK source="media_items" db=1.1ms idle=557.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "조건검색식, 기초부터 실전 매매 세팅까지!", "3714d0fb-3479-4d21-b58a-3581dd989159", false, 2954, false, "4nSxuddnkXk", "https://www.youtube.com/watch?v=4nSxuddnkXk", 2, "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", false, false, 6, [], 1, ~U[2026-09-11 09:00:27Z], ~U[2026-10-17 03:17:35Z], ~U[2026-10-17 03:17:35Z], "#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "조건검색식, 기초부터 실전 매매 세팅까지!", 2954, false, "4nSxuddnkXk", "https://www.youtube.com/watch?v=4nSxuddnkXk", "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", false, 6, ~U[2026-09-11 09:00:27Z]] 03:17:35.945 [debug] QUERY OK source="sources" db=0.2ms idle=14.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" = ?) [6] 03:17:35.945 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:35.946 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [43121] 03:17:35.946 [debug] Current batch of media processed. Will check again in 1000ms 03:17:36.947 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 3091, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", "id" => "du0PkCrFwgY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=du0PkCrFwgY", "playlist_index" => 3, "timestamp" => 1787907637, "title" => "기초부터 복습까지! HTS 수식관리자 총정리", "upload_date" => "20260828"} 03:17:36.947 [debug] QUERY OK source="sources" db=0.1ms idle=1002.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:36.948 [debug] QUERY OK source="sources" db=0.2ms idle=1002.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] 03:17:36.948 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-28 09:00:37Z], 6] 03:17:36.950 [debug] QUERY OK source="media_items" db=0.9ms idle=1002.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "기초부터 복습까지! HTS 수식관리자 총정리", "1bfd6a34-b5d9-4c02-a777-7fdb147c64e9", false, 3091, false, "du0PkCrFwgY", "https://www.youtube.com/watch?v=du0PkCrFwgY", 3, "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", false, false, 6, [], 1, ~U[2026-08-28 09:00:37Z], ~U[2026-10-17 03:17:36Z], ~U[2026-10-17 03:17:36Z], "#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "기초부터 복습까지! HTS 수식관리자 총정리", 3091, false, "du0PkCrFwgY", "https://www.youtube.com/watch?v=du0PkCrFwgY", "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", false, 6, ~U[2026-08-28 09:00:37Z]] 03:17:36.950 [debug] QUERY OK source="sources" db=0.1ms idle=18.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" = ?) [6] 03:17:36.950 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:36.950 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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 [42075] 03:17:36.950 [debug] Current batch of media processed. Will check again in 1000ms 03:17:37.952 [debug] Current batch of media processed. Will check again in 1000ms 03:17:38.953 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2061, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", "id" => "1crrXULrqyk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=1crrXULrqyk", "playlist_index" => 4, "timestamp" => 1787472011, "title" => "돈 들어오는 구간 찾는 방법!", "upload_date" => "20260823"} 03:17:38.953 [debug] QUERY OK source="sources" db=0.1ms idle=567.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:38.953 [debug] QUERY OK source="sources" db=0.1ms idle=567.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] 03:17:38.954 [debug] QUERY OK source="media_items" db=0.3ms idle=568.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-23 08:00:11Z], 6] 03:17:38.957 [debug] QUERY OK source="media_items" db=2.2ms idle=568.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "돈 들어오는 구간 찾는 방법!", "9f026c59-1916-4026-8c98-5bb9436db924", false, 2061, false, "1crrXULrqyk", "https://www.youtube.com/watch?v=1crrXULrqyk", 4, "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", false, false, 6, [], 1, ~U[2026-08-23 08:00:11Z], ~U[2026-10-17 03:17:38Z], ~U[2026-10-17 03:17:38Z], "#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "돈 들어오는 구간 찾는 방법!", 2061, false, "1crrXULrqyk", "https://www.youtube.com/watch?v=1crrXULrqyk", "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", false, 6, ~U[2026-08-23 08:00:11Z]] 03:17:38.957 [debug] QUERY OK source="sources" db=0.1ms idle=23.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" = ?) [6] 03:17:38.957 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:38.958 [debug] QUERY OK source="media_items" db=0.1ms idle=4.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 [42078] 03:17:38.958 [debug] Current batch of media processed. Will check again in 1000ms 03:17:39.959 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1519, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", "id" => "xJ7md1FoEBY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xJ7md1FoEBY", "playlist_index" => 5, "timestamp" => 1787385637, "title" => "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", "upload_date" => "20260822"} 03:17:39.959 [debug] QUERY OK source="sources" db=0.1ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:39.960 [debug] QUERY OK source="sources" db=0.0ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:17:39.960 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-22 08:00:37Z], 6] 03:17:39.962 [debug] QUERY OK source="media_items" db=1.1ms idle=1002.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", "56409f11-38b7-4dd4-bccb-aebd778634d7", false, 1519, false, "xJ7md1FoEBY", "https://www.youtube.com/watch?v=xJ7md1FoEBY", 5, "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", false, false, 6, [], 1, ~U[2026-08-22 08:00:37Z], ~U[2026-10-17 03:17:39Z], ~U[2026-10-17 03:17:39Z], "#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", 1519, false, "xJ7md1FoEBY", "https://www.youtube.com/watch?v=xJ7md1FoEBY", "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", false, 6, ~U[2026-08-22 08:00:37Z]] 03:17:39.962 [debug] QUERY OK source="sources" db=0.1ms idle=27.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" = ?) [6] 03:17:39.963 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:39.963 [debug] QUERY OK source="media_items" db=0.1ms 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 [42080] 03:17:39.963 [debug] Current batch of media processed. Will check again in 1000ms 03:17:40.963 [debug] Current batch of media processed. Will check again in 1000ms 03:17:41.965 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2564, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", "id" => "OtMK7cTvUwI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OtMK7cTvUwI", "playlist_index" => 6, "timestamp" => 1787299238, "title" => "지수보다 강한 놈을 잡아 전략짜자!", "upload_date" => "20260821"} 03:17:41.965 [debug] QUERY OK source="sources" db=0.2ms idle=579.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:41.966 [debug] QUERY OK source="sources" db=0.0ms idle=580.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] 03:17:41.966 [debug] QUERY OK source="media_items" db=0.2ms idle=580.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-21 08:00:38Z], 6] 03:17:42.277 [debug] QUERY OK source="media_items" db=310.0ms idle=580.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "지수보다 강한 놈을 잡아 전략짜자!", "1046a938-dd64-4e74-847b-17dfc4a95feb", false, 2564, false, "OtMK7cTvUwI", "https://www.youtube.com/watch?v=OtMK7cTvUwI", 6, "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", false, false, 6, [], 1, ~U[2026-08-21 08:00:38Z], ~U[2026-10-17 03:17:41Z], ~U[2026-10-17 03:17:41Z], "#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "지수보다 강한 놈을 잡아 전략짜자!", 2564, false, "OtMK7cTvUwI", "https://www.youtube.com/watch?v=OtMK7cTvUwI", "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", false, 6, ~U[2026-08-21 08:00:38Z]] 03:17:42.277 [debug] QUERY OK source="sources" db=0.2ms idle=340.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" = ?) [6] 03:17:42.277 [debug] QUERY OK source="media_profiles" db=0.0ms idle=311.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] 03:17:42.278 [debug] QUERY OK source="media_items" db=0.1ms idle=311.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 [42082] 03:17:42.278 [debug] Current batch of media processed. Will check again in 1000ms 03:17:43.279 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1887, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", "id" => "Y0QXcAemBJ4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Y0QXcAemBJ4", "playlist_index" => 7, "timestamp" => 1787212824, "title" => "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", "upload_date" => "20260820"} 03:17:43.279 [debug] QUERY OK source="sources" db=0.1ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:43.279 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:17:43.280 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-20 08:00:24Z], 6] 03:17:43.402 [debug] QUERY OK source="media_items" db=121.7ms idle=1002.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", "307d1b91-92fa-4f15-9342-65bfab4b6d45", false, 1887, false, "Y0QXcAemBJ4", "https://www.youtube.com/watch?v=Y0QXcAemBJ4", 7, "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", false, false, 6, [], 1, ~U[2026-08-20 08:00:24Z], ~U[2026-10-17 03:17:43Z], ~U[2026-10-17 03:17:43Z], "#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", 1887, false, "Y0QXcAemBJ4", "https://www.youtube.com/watch?v=Y0QXcAemBJ4", "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", false, 6, ~U[2026-08-20 08:00:24Z]] 03:17:43.402 [debug] QUERY OK source="sources" db=0.2ms idle=464.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" = ?) [6] 03:17:43.403 [debug] QUERY OK source="media_profiles" db=0.2ms idle=123.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] 03:17:43.403 [debug] QUERY OK source="media_items" db=0.1ms idle=123.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 [42084] 03:17:43.403 [debug] Current batch of media processed. Will check again in 1000ms 03:17:44.405 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1448, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", "id" => "VzxZsZLorcg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=VzxZsZLorcg", "playlist_index" => 8, "timestamp" => 1787126438, "title" => "복잡한 수급 데이터 이 화면 하나로 끝!", "upload_date" => "20260819"} 03:17:44.405 [debug] QUERY OK source="sources" db=0.2ms idle=1003.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:44.406 [debug] QUERY OK source="sources" db=0.0ms queue=0.1ms idle=1003.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] 03:17:44.406 [debug] QUERY OK source="media_items" db=0.4ms idle=1003.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-19 08:00:38Z], 6] 03:17:44.408 [debug] QUERY OK source="media_items" db=0.9ms idle=1003.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "복잡한 수급 데이터 이 화면 하나로 끝!", "f7562d9c-15d5-49d9-9203-5313d53719e9", false, 1448, false, "VzxZsZLorcg", "https://www.youtube.com/watch?v=VzxZsZLorcg", 8, "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", false, false, 6, [], 1, ~U[2026-08-19 08:00:38Z], ~U[2026-10-17 03:17:44Z], ~U[2026-10-17 03:17:44Z], "#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "복잡한 수급 데이터 이 화면 하나로 끝!", 1448, false, "VzxZsZLorcg", "https://www.youtube.com/watch?v=VzxZsZLorcg", "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", false, 6, ~U[2026-08-19 08:00:38Z]] 03:17:44.408 [debug] QUERY OK source="sources" db=0.2ms idle=468.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" = ?) [6] 03:17:44.408 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:44.409 [debug] QUERY OK source="media_items" db=0.2ms 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 [42086] 03:17:44.409 [debug] Current batch of media processed. Will check again in 1000ms 03:17:45.409 [debug] Current batch of media processed. Will check again in 1000ms 03:17:46.411 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2108, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", "id" => "CWAN_vfIkA4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CWAN_vfIkA4", "playlist_index" => 9, "timestamp" => 1787040035, "title" => "패닉 셀 하기 전 반드시 확인해야 할 것", "upload_date" => "20260818"} 03:17:46.411 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?)) [6] 03:17:46.412 [debug] QUERY OK source="sources" db=0.1ms idle=25.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] 03:17:46.412 [debug] QUERY OK source="media_items" db=0.3ms idle=26.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-18 08:00:35Z], 6] 03:17:46.413 [debug] QUERY OK source="media_items" db=1.0ms idle=26.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "패닉 셀 하기 전 반드시 확인해야 할 것", "0b3e1969-d376-4223-9a26-ee10030d17a1", false, 2108, false, "CWAN_vfIkA4", "https://www.youtube.com/watch?v=CWAN_vfIkA4", 9, "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", false, false, 6, [], 1, ~U[2026-08-18 08:00:35Z], ~U[2026-10-17 03:17:46Z], ~U[2026-10-17 03:17:46Z], "#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "패닉 셀 하기 전 반드시 확인해야 할 것", 2108, false, "CWAN_vfIkA4", "https://www.youtube.com/watch?v=CWAN_vfIkA4", "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", false, 6, ~U[2026-08-18 08:00:35Z]] 03:17:46.414 [debug] QUERY OK source="sources" db=0.2ms idle=28.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" = ?) [6] 03:17:46.414 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:46.414 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [42088] 03:17:46.414 [debug] Current batch of media processed. Will check again in 1000ms 03:17:47.415 [debug] Current batch of media processed. Will check again in 1000ms 03:17:48.417 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2653, "filename" => "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", "id" => "F_urGvb5_RU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=F_urGvb5_RU", "playlist_index" => 10, "timestamp" => 1785488431, "title" => "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", "upload_date" => "20260731"} 03:17:48.417 [debug] QUERY OK source="sources" db=0.2ms idle=473.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:48.418 [debug] QUERY OK source="sources" db=0.1ms idle=31.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] 03:17:48.418 [debug] QUERY OK source="media_items" db=0.3ms idle=32.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-31 09:00:31Z], 6] 03:17:48.419 [debug] QUERY OK source="media_items" db=0.9ms idle=32.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", "add2eada-3bcc-443f-995d-6eb0ff2c06a4", false, 2653, false, "F_urGvb5_RU", "https://www.youtube.com/watch?v=F_urGvb5_RU", 10, "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", false, false, 6, [], 1, ~U[2026-07-31 09:00:31Z], ~U[2026-10-17 03:17:48Z], ~U[2026-10-17 03:17:48Z], "#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", 2653, false, "F_urGvb5_RU", "https://www.youtube.com/watch?v=F_urGvb5_RU", "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", false, 6, ~U[2026-07-31 09:00:31Z]] 03:17:48.420 [debug] QUERY OK source="sources" db=0.1ms idle=33.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" = ?) [6] 03:17:48.420 [debug] QUERY OK source="media_profiles" db=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] 03:17:48.420 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [42089] 03:17:48.420 [debug] Current batch of media processed. Will check again in 1000ms 03:17:49.422 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "duration" => 2077, "filename" => "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", "id" => "gZTpk4n_PDw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gZTpk4n_PDw", "playlist_index" => 11, "timestamp" => 1784278830, "title" => "시장이 힘들 때 대비하는 전략", "upload_date" => "20260717"} 03:17:49.422 [debug] QUERY OK source="sources" db=0.3ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:49.423 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:17:49.423 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-17 09:00:30Z], 6] 03:17:49.425 [debug] QUERY OK source="media_items" db=1.0ms idle=1003.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "시장이 힘들 때 대비하는 전략", "de8a659e-1502-4e54-8e7d-d70a63b98fba", false, 2077, false, "gZTpk4n_PDw", "https://www.youtube.com/watch?v=gZTpk4n_PDw", 11, "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", false, false, 6, [], 1, ~U[2026-07-17 09:00:30Z], ~U[2026-10-17 03:17:49Z], ~U[2026-10-17 03:17:49Z], "#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "시장이 힘들 때 대비하는 전략", 2077, false, "gZTpk4n_PDw", "https://www.youtube.com/watch?v=gZTpk4n_PDw", "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", false, 6, ~U[2026-07-17 09:00:30Z]] 03:17:49.425 [debug] QUERY OK source="sources" db=0.1ms idle=480.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" = ?) [6] 03:17:49.425 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:49.426 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [37711] 03:17:49.426 [debug] Current batch of media processed. Will check again in 1000ms 03:17:50.426 [debug] Current batch of media processed. Will check again in 1000ms 03:17:51.428 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1296, "filename" => "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", "id" => "tJDQVqRzklM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=tJDQVqRzklM", "playlist_index" => 12, "timestamp" => 1783069233, "title" => "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", "upload_date" => "20260703"} 03:17:51.428 [debug] QUERY OK source="sources" db=0.2ms idle=481.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:51.429 [debug] QUERY OK source="sources" db=0.0ms idle=42.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] 03:17:51.429 [debug] QUERY OK source="media_items" db=0.3ms idle=43.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-03 09:00:33Z], 6] 03:17:51.430 [debug] QUERY OK source="media_items" db=0.8ms idle=43.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", "1b04afcf-61cf-40a3-beea-d27021edf08a", false, 1296, false, "tJDQVqRzklM", "https://www.youtube.com/watch?v=tJDQVqRzklM", 12, "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", false, false, 6, [], 1, ~U[2026-07-03 09:00:33Z], ~U[2026-10-17 03:17:51Z], ~U[2026-10-17 03:17:51Z], "#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", 1296, false, "tJDQVqRzklM", "https://www.youtube.com/watch?v=tJDQVqRzklM", "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", false, 6, ~U[2026-07-03 09:00:33Z]] 03:17:51.430 [debug] QUERY OK source="sources" db=0.1ms idle=44.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" = ?) [6] 03:17:51.431 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:51.431 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [37713] 03:17:51.431 [debug] Current batch of media processed. Will check again in 1000ms 03:17:52.432 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2386, "filename" => "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", "id" => "bb2pO2nGHf0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=bb2pO2nGHf0", "playlist_index" => 13, "timestamp" => 1780650026, "title" => "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", "upload_date" => "20260605"} 03:17:52.433 [debug] QUERY OK source="sources" db=0.3ms idle=1002.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:52.433 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:17:52.433 [debug] QUERY OK source="media_items" db=0.2ms idle=1002.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-05 09:00:26Z], 6] 03:17:52.434 [debug] QUERY OK source="media_items" db=0.8ms idle=1002.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", "81bc929a-719d-43b0-a36f-f449fe0e942b", false, 2386, false, "bb2pO2nGHf0", "https://www.youtube.com/watch?v=bb2pO2nGHf0", 13, "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", false, false, 6, [], 1, ~U[2026-06-05 09:00:26Z], ~U[2026-10-17 03:17:52Z], ~U[2026-10-17 03:17:52Z], "#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", 2386, false, "bb2pO2nGHf0", "https://www.youtube.com/watch?v=bb2pO2nGHf0", "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", false, 6, ~U[2026-06-05 09:00:26Z]] 03:17:52.435 [debug] QUERY OK source="sources" db=0.1ms idle=487.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" = ?) [6] 03:17:52.435 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:52.435 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [29618] 03:17:52.435 [debug] Current batch of media processed. Will check again in 1000ms 03:17:53.436 [debug] Current batch of media processed. Will check again in 1000ms 03:17:54.438 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "duration" => 1391, "filename" => "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", "id" => "Eb02sSekWo8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Eb02sSekWo8", "playlist_index" => 14, "timestamp" => 1775206817, "title" => "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", "upload_date" => "20260403"} 03:17:54.439 [debug] QUERY OK source="sources" db=0.4ms idle=487.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:54.439 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:17:54.439 [debug] QUERY OK source="media_items" db=0.3ms idle=53.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-03 09:00:17Z], 6] 03:17:54.441 [debug] QUERY OK source="media_items" db=1.1ms idle=54.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", "8b73e6ca-835a-4a9b-bf06-a8003915e92d", false, 1391, false, "Eb02sSekWo8", "https://www.youtube.com/watch?v=Eb02sSekWo8", 14, "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", false, false, 6, [], 1, ~U[2026-04-03 09:00:17Z], ~U[2026-10-17 03:17:54Z], ~U[2026-10-17 03:17:54Z], "#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", 1391, false, "Eb02sSekWo8", "https://www.youtube.com/watch?v=Eb02sSekWo8", "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", false, 6, ~U[2026-04-03 09:00:17Z]] 03:17:54.442 [debug] QUERY OK source="sources" db=0.3ms idle=55.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" = ?) [6] 03:17:54.442 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:17:54.443 [debug] QUERY OK source="media_items" db=0.3ms idle=3.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [20916] 03:17:54.443 [debug] Current batch of media processed. Will check again in 1000ms 03:17:55.444 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1459, "filename" => "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", "id" => "8EoH-ULFH50", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=8EoH-ULFH50", "playlist_index" => 15, "timestamp" => 1769763617, "title" => "저가 매수 타이밍을 알아보자!", "upload_date" => "20260130"} 03:17:55.444 [debug] QUERY OK source="sources" db=0.2ms idle=1003.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:55.445 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:17:55.445 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-30 09:00:17Z], 6] 03:17:55.446 [debug] QUERY OK source="media_items" db=0.7ms idle=1002.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "저가 매수 타이밍을 알아보자!", "957cef43-3aa1-4a57-a609-72317dcfb079", false, 1459, false, "8EoH-ULFH50", "https://www.youtube.com/watch?v=8EoH-ULFH50", 15, "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", false, false, 6, [], 1, ~U[2026-01-30 09:00:17Z], ~U[2026-10-17 03:17:55Z], ~U[2026-10-17 03:17:55Z], "#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "저가 매수 타이밍을 알아보자!", 1459, false, "8EoH-ULFH50", "https://www.youtube.com/watch?v=8EoH-ULFH50", "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", false, 6, ~U[2026-01-30 09:00:17Z]] 03:17:55.447 [debug] QUERY OK source="sources" db=0.1ms idle=495.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" = ?) [6] 03:17:55.447 [debug] QUERY OK source="media_profiles" db=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] 03:17:55.447 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [16070] 03:17:55.447 [debug] Current batch of media processed. Will check again in 1000ms 03:17:56.447 [debug] Current batch of media processed. Will check again in 1000ms 03:17:57.449 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1203, "filename" => "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", "id" => "2mDQr3dUTCI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=2mDQr3dUTCI", "playlist_index" => 16, "timestamp" => 1768554006, "title" => "직장인 필수, 종가배팅이 답인 이유!", "upload_date" => "20260116"} 03:17:57.449 [debug] QUERY OK source="sources" db=0.2ms idle=494.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:57.450 [debug] QUERY OK source="sources" db=0.1ms idle=64.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] 03:17:57.450 [debug] QUERY OK source="media_items" db=0.3ms idle=64.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-16 09:00:06Z], 6] 03:17:57.451 [debug] QUERY OK source="media_items" db=0.8ms idle=64.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수, 종가배팅이 답인 이유!", "9f139612-97c2-40b0-b461-7fa8ffa7214e", false, 1203, false, "2mDQr3dUTCI", "https://www.youtube.com/watch?v=2mDQr3dUTCI", 16, "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", false, false, 6, [], 1, ~U[2026-01-16 09:00:06Z], ~U[2026-10-17 03:17:57Z], ~U[2026-10-17 03:17:57Z], "#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수, 종가배팅이 답인 이유!", 1203, false, "2mDQr3dUTCI", "https://www.youtube.com/watch?v=2mDQr3dUTCI", "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", false, 6, ~U[2026-01-16 09:00:06Z]] 03:17:57.451 [debug] QUERY OK source="sources" db=0.1ms idle=65.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" = ?) [6] 03:17:57.452 [debug] QUERY OK source="media_profiles" db=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] 03:17:57.452 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16069] 03:17:57.452 [debug] Current batch of media processed. Will check again in 1000ms 03:17:58.454 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1124, "filename" => "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", "id" => "qwWeJE9Uzp4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=qwWeJE9Uzp4", "playlist_index" => 17, "timestamp" => 1767344485, "title" => "여러가지 조건을 동시에 만족하는 자동주문법", "upload_date" => "20260102"} 03:17:58.454 [debug] QUERY OK source="sources" db=0.1ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:58.454 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:17:58.455 [debug] QUERY OK source="media_items" db=0.2ms idle=1002.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-02 09:01:25Z], 6] 03:17:58.456 [debug] QUERY OK source="media_items" db=0.6ms idle=1002.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "여러가지 조건을 동시에 만족하는 자동주문법", "4d3ac47e-81d3-4555-b3e9-58343ecc6eba", false, 1124, false, "qwWeJE9Uzp4", "https://www.youtube.com/watch?v=qwWeJE9Uzp4", 17, "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", false, false, 6, [], 1, ~U[2026-01-02 09:01:25Z], ~U[2026-10-17 03:17:58Z], ~U[2026-10-17 03:17:58Z], "#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "여러가지 조건을 동시에 만족하는 자동주문법", 1124, false, "qwWeJE9Uzp4", "https://www.youtube.com/watch?v=qwWeJE9Uzp4", "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", false, 6, ~U[2026-01-02 09:01:25Z]] 03:17:58.456 [debug] QUERY OK source="sources" db=0.1ms idle=500.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" = ?) [6] 03:17:58.456 [debug] QUERY OK source="media_profiles" db=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] 03:17:58.457 [debug] QUERY OK source="media_items" db=0.1ms idle=2.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16068] 03:17:58.457 [debug] Current batch of media processed. Will check again in 1000ms 03:17:59.458 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #FV5LqyehGgM/youtube video #FV5LqyehGgM [FV5LqyehGgM].NA", "id" => "FV5LqyehGgM", "original_url" => "https://www.youtube.com/watch?v=FV5LqyehGgM", "playlist_index" => 18, "title" => "youtube video #FV5LqyehGgM"} 03:17:59.458 [debug] QUERY OK source="sources" db=0.1ms idle=1002.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:59.458 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #BsNuHOumSws/youtube video #BsNuHOumSws [BsNuHOumSws].NA", "id" => "BsNuHOumSws", "original_url" => "https://www.youtube.com/watch?v=BsNuHOumSws", "playlist_index" => 19, "title" => "youtube video #BsNuHOumSws"} 03:17:59.459 [debug] QUERY OK source="sources" db=0.1ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:17:59.459 [debug] Current batch of media processed. Will check again in 1000ms 03:18:00.459 [debug] Current batch of media processed. Will check again in 1000ms 03:18:00.884 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:18:01.461 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1913, "filename" => "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", "id" => "C_UQnz3-1oM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=C_UQnz3-1oM", "playlist_index" => 20, "timestamp" => 1763110821, "title" => "오늘 급등하는 주도주로 트레이딩하자", "upload_date" => "20251114"} 03:18:01.461 [debug] QUERY OK source="sources" db=0.2ms idle=1075.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:01.461 [debug] QUERY OK source="sources" db=0.1ms idle=1075.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] 03:18:01.462 [debug] QUERY OK source="media_items" db=0.2ms idle=577.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-14 09:00:21Z], 6] 03:18:01.463 [debug] QUERY OK source="media_items" db=0.6ms idle=502.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "오늘 급등하는 주도주로 트레이딩하자", "0301cab9-729b-47b2-a89f-5febe72e5603", false, 1913, false, "C_UQnz3-1oM", "https://www.youtube.com/watch?v=C_UQnz3-1oM", 20, "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", false, false, 6, [], 1, ~U[2025-11-14 09:00:21Z], ~U[2026-10-17 03:18:01Z], ~U[2026-10-17 03:18:01Z], "#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "오늘 급등하는 주도주로 트레이딩하자", 1913, false, "C_UQnz3-1oM", "https://www.youtube.com/watch?v=C_UQnz3-1oM", "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", false, 6, ~U[2025-11-14 09:00:21Z]] 03:18:01.463 [debug] QUERY OK source="sources" db=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" = ?) [6] 03:18:01.463 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:01.464 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16065] 03:18:01.464 [debug] Current batch of media processed. Will check again in 1000ms 03:18:02.465 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 2462, "filename" => "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", "id" => "1_2-VnhSwVg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=1_2-VnhSwVg", "playlist_index" => 21, "timestamp" => 1760691606, "title" => "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", "upload_date" => "20251017"} 03:18:02.465 [debug] QUERY OK source="sources" db=0.1ms idle=1002.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:02.466 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:18:02.466 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-17 09:00:06Z], 6] 03:18:02.467 [debug] QUERY OK source="media_items" db=0.7ms idle=1002.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", "d0d6a239-2941-425e-828a-ab39438b87a0", false, 2462, false, "1_2-VnhSwVg", "https://www.youtube.com/watch?v=1_2-VnhSwVg", 21, "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", false, false, 6, [], 1, ~U[2025-10-17 09:00:06Z], ~U[2026-10-17 03:18:02Z], ~U[2026-10-17 03:18:02Z], "#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", 2462, false, "1_2-VnhSwVg", "https://www.youtube.com/watch?v=1_2-VnhSwVg", "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", false, 6, ~U[2025-10-17 09:00:06Z]] 03:18:02.467 [debug] QUERY OK source="sources" db=0.1ms idle=507.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:02.468 [debug] QUERY OK source="media_profiles" db=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] 03:18:02.468 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16064] 03:18:02.468 [debug] Current batch of media processed. Will check again in 1000ms 03:18:03.468 [debug] Current batch of media processed. Will check again in 1000ms 03:18:04.395 [info] {"source":"oban","duration":1077,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:18:04.470 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1963, "filename" => "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", "id" => "_OoTXq95EmU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_OoTXq95EmU", "playlist_index" => 22, "timestamp" => 1759482063, "title" => "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", "upload_date" => "20251003"} 03:18:04.470 [debug] QUERY OK source="sources" db=0.3ms idle=84.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:04.471 [debug] QUERY OK source="sources" db=0.1ms idle=85.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] 03:18:04.471 [debug] QUERY OK source="media_items" db=0.3ms idle=85.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-03 09:01:03Z], 6] 03:18:04.474 [debug] QUERY OK source="media_items" db=2.6ms idle=85.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", "3c82ff24-982b-4349-9f16-df702eff9030", false, 1963, false, "_OoTXq95EmU", "https://www.youtube.com/watch?v=_OoTXq95EmU", 22, "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", false, false, 6, [], 1, ~U[2025-10-03 09:01:03Z], ~U[2026-10-17 03:18:04Z], ~U[2026-10-17 03:18:04Z], "#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", 1963, false, "_OoTXq95EmU", "https://www.youtube.com/watch?v=_OoTXq95EmU", "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", false, 6, ~U[2025-10-03 09:01:03Z]] 03:18:04.475 [debug] QUERY OK source="sources" db=0.2ms idle=78.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" = ?) [6] 03:18:04.475 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:04.475 [debug] QUERY OK source="media_items" db=0.1ms idle=4.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 [16063] 03:18:04.475 [debug] Current batch of media processed. Will check again in 1000ms 03:18:05.477 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1715, "filename" => "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", "id" => "uEpQQiAI-xM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uEpQQiAI-xM", "playlist_index" => 23, "timestamp" => 1757667688, "title" => "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", "upload_date" => "20250912"} 03:18:05.477 [debug] QUERY OK source="sources" db=0.4ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:05.478 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:18:05.478 [debug] QUERY OK source="media_items" db=0.3ms idle=1003.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 09:01:28Z], 6] 03:18:05.479 [debug] QUERY OK source="media_items" db=0.6ms idle=1003.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", "78e7bb9e-e679-41f1-b9e1-e4cd471af8b0", false, 1715, false, "uEpQQiAI-xM", "https://www.youtube.com/watch?v=uEpQQiAI-xM", 23, "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", false, false, 6, [], 1, ~U[2025-09-12 09:01:28Z], ~U[2026-10-17 03:18:05Z], ~U[2026-10-17 03:18:05Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", 1715, false, "uEpQQiAI-xM", "https://www.youtube.com/watch?v=uEpQQiAI-xM", "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", false, 6, ~U[2025-09-12 09:01:28Z]] 03:18:05.480 [debug] QUERY OK source="sources" db=0.1ms idle=516.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" = ?) [6] 03:18:05.480 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:05.480 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16062] 03:18:05.480 [debug] Current batch of media processed. Will check again in 1000ms 03:18:06.481 [debug] Current batch of media processed. Will check again in 1000ms 03:18:07.483 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1827, "filename" => "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", "id" => "wbnk5XJUPAk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=wbnk5XJUPAk", "playlist_index" => 24, "timestamp" => 1754643700, "title" => "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", "upload_date" => "20250808"} 03:18:07.483 [debug] QUERY OK source="sources" db=0.1ms idle=517.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:07.483 [debug] QUERY OK source="sources" db=0.0ms idle=97.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] 03:18:07.484 [debug] QUERY OK source="media_items" db=0.2ms idle=98.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-08 09:01:40Z], 6] 03:18:07.485 [debug] QUERY OK source="media_items" db=0.5ms idle=98.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", "f6b62ae1-c483-4f2a-8353-f91a82ccc94e", false, 1827, false, "wbnk5XJUPAk", "https://www.youtube.com/watch?v=wbnk5XJUPAk", 24, "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", false, false, 6, [], 1, ~U[2025-08-08 09:01:40Z], ~U[2026-10-17 03:18:07Z], ~U[2026-10-17 03:18:07Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", 1827, false, "wbnk5XJUPAk", "https://www.youtube.com/watch?v=wbnk5XJUPAk", "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", false, 6, ~U[2025-08-08 09:01:40Z]] 03:18:07.485 [debug] QUERY OK source="sources" db=0.1ms idle=99.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" = ?) [6] 03:18:07.485 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:07.485 [debug] QUERY OK source="media_items" db=0.1ms idle=1.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16061] 03:18:07.486 [debug] Current batch of media processed. Will check again in 1000ms 03:18:08.487 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1750, "filename" => "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", "id" => "19LkkcdjqbY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=19LkkcdjqbY", "playlist_index" => 25, "timestamp" => 1752829206, "title" => "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", "upload_date" => "20250718"} 03:18:08.487 [debug] QUERY OK source="sources" db=0.2ms idle=1002.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:08.488 [debug] QUERY OK source="sources" db=0.1ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:08.488 [debug] QUERY OK source="media_items" db=0.2ms idle=1002.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-18 09:00:06Z], 6] 03:18:08.489 [debug] QUERY OK source="media_items" db=0.7ms idle=1002.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", "27955eb4-ce0c-4284-9e91-b922a1697340", false, 1750, false, "19LkkcdjqbY", "https://www.youtube.com/watch?v=19LkkcdjqbY", 25, "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", false, false, 6, [], 1, ~U[2025-07-18 09:00:06Z], ~U[2026-10-17 03:18:08Z], ~U[2026-10-17 03:18:08Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", 1750, false, "19LkkcdjqbY", "https://www.youtube.com/watch?v=19LkkcdjqbY", "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", false, 6, ~U[2025-07-18 09:00:06Z]] 03:18:08.489 [debug] QUERY OK source="sources" db=0.1ms idle=523.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" = ?) [6] 03:18:08.490 [debug] QUERY OK source="media_profiles" db=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] 03:18:08.490 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [16060] 03:18:08.490 [debug] Current batch of media processed. Will check again in 1000ms 03:18:09.490 [debug] Current batch of media processed. Will check again in 1000ms 03:18:10.492 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1848, "filename" => "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", "id" => "MMbBPNJuxqQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=MMbBPNJuxqQ", "playlist_index" => 26, "timestamp" => 1751619637, "title" => "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", "upload_date" => "20250704"} 03:18:10.492 [debug] QUERY OK source="sources" db=0.2ms idle=522.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:10.493 [debug] QUERY OK source="sources" db=0.1ms idle=106.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] 03:18:10.493 [debug] QUERY OK source="media_items" db=0.3ms idle=107.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-04 09:00:37Z], 6] 03:18:10.494 [debug] QUERY OK source="media_items" db=0.6ms idle=107.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", "bfdf791b-50f4-4dc1-bcaf-79b03d25e388", false, 1848, false, "MMbBPNJuxqQ", "https://www.youtube.com/watch?v=MMbBPNJuxqQ", 26, "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", false, false, 6, [], 1, ~U[2025-07-04 09:00:37Z], ~U[2026-10-17 03:18:10Z], ~U[2026-10-17 03:18:10Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", 1848, false, "MMbBPNJuxqQ", "https://www.youtube.com/watch?v=MMbBPNJuxqQ", "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", false, 6, ~U[2025-07-04 09:00:37Z]] 03:18:10.494 [debug] QUERY OK source="sources" db=0.1ms idle=108.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" = ?) [6] 03:18:10.494 [debug] QUERY OK source="media_profiles" db=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] 03:18:10.495 [debug] QUERY OK source="media_items" db=0.1ms idle=2.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [46827] 03:18:10.495 [debug] Current batch of media processed. Will check again in 1000ms 03:18:11.496 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 2005, "filename" => "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", "id" => "KpLlQK-f0IE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=KpLlQK-f0IE", "playlist_index" => 27, "timestamp" => 1750410029, "title" => "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", "upload_date" => "20250620"} 03:18:11.496 [debug] QUERY OK source="sources" db=0.1ms idle=1002.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:11.497 [debug] QUERY OK source="sources" db=0.0ms idle=1002.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] 03:18:11.497 [debug] QUERY OK source="media_items" db=0.5ms idle=1002.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-20 09:00:29Z], 6] 03:18:11.498 [debug] QUERY OK source="media_items" db=0.7ms idle=1002.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", "cf851066-8bc4-4c32-a798-eb9323506fc3", false, 2005, false, "KpLlQK-f0IE", "https://www.youtube.com/watch?v=KpLlQK-f0IE", 27, "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", false, false, 6, [], 1, ~U[2025-06-20 09:00:29Z], ~U[2026-10-17 03:18:11Z], ~U[2026-10-17 03:18:11Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", 2005, false, "KpLlQK-f0IE", "https://www.youtube.com/watch?v=KpLlQK-f0IE", "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", false, 6, ~U[2025-06-20 09:00:29Z]] 03:18:11.499 [debug] QUERY OK source="sources" db=0.1ms idle=528.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" = ?) [6] 03:18:11.499 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:11.499 [debug] QUERY OK source="media_items" db=0.1ms 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 [16059] 03:18:11.499 [debug] Current batch of media processed. Will check again in 1000ms 03:18:12.500 [debug] Current batch of media processed. Will check again in 1000ms 03:18:13.502 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1544, "filename" => "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", "id" => "fEv0qCkgXKk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=fEv0qCkgXKk", "playlist_index" => 28, "timestamp" => 1749200466, "title" => "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", "upload_date" => "20250606"} 03:18:13.502 [debug] QUERY OK source="sources" db=0.1ms idle=528.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:13.503 [debug] QUERY OK source="sources" db=0.1ms idle=116.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] 03:18:13.503 [debug] QUERY OK source="media_items" db=0.3ms idle=117.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-06 09:01:06Z], 6] 03:18:13.504 [debug] QUERY OK source="media_items" db=0.6ms idle=117.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", "298ee986-dbdf-40ea-93dd-fa6b8de89cce", false, 1544, false, "fEv0qCkgXKk", "https://www.youtube.com/watch?v=fEv0qCkgXKk", 28, "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", false, false, 6, [], 1, ~U[2025-06-06 09:01:06Z], ~U[2026-10-17 03:18:13Z], ~U[2026-10-17 03:18:13Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", 1544, false, "fEv0qCkgXKk", "https://www.youtube.com/watch?v=fEv0qCkgXKk", "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", false, 6, ~U[2025-06-06 09:01:06Z]] 03:18:13.504 [debug] QUERY OK source="sources" db=0.0ms idle=118.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" = ?) [6] 03:18:13.504 [debug] QUERY OK source="media_profiles" db=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] 03:18:13.505 [debug] QUERY OK source="media_items" db=0.1ms idle=2.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16058] 03:18:13.505 [debug] Current batch of media processed. Will check again in 1000ms 03:18:14.506 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 839, "filename" => "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", "id" => "Yx8Lcouocj4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Yx8Lcouocj4", "playlist_index" => 29, "timestamp" => 1747994455, "title" => "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", "upload_date" => "20250523"} 03:18:14.506 [debug] QUERY OK source="sources" db=0.1ms idle=1001.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:14.506 [debug] QUERY OK source="sources" db=0.0ms idle=1002.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] 03:18:14.507 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-23 10:00:55Z], 6] 03:18:14.508 [debug] QUERY OK source="media_items" db=0.7ms idle=1002.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", "c3a0cd6a-1962-47d4-a62d-27bcc65a53e3", false, 839, false, "Yx8Lcouocj4", "https://www.youtube.com/watch?v=Yx8Lcouocj4", 29, "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", false, false, 6, [], 1, ~U[2025-05-23 10:00:55Z], ~U[2026-10-17 03:18:14Z], ~U[2026-10-17 03:18:14Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", 839, false, "Yx8Lcouocj4", "https://www.youtube.com/watch?v=Yx8Lcouocj4", "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", false, 6, ~U[2025-05-23 10:00:55Z]] 03:18:14.508 [debug] QUERY OK source="sources" db=0.1ms idle=533.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" = ?) [6] 03:18:14.508 [debug] QUERY OK source="media_profiles" db=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] 03:18:14.509 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16057] 03:18:14.509 [debug] Current batch of media processed. Will check again in 1000ms 03:18:15.509 [debug] Current batch of media processed. Will check again in 1000ms 03:18:16.511 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1697, "filename" => "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", "id" => "gXHrvwwZ7Yo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", "playlist_index" => 30, "timestamp" => 1746781266, "title" => "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", "upload_date" => "20250509"} 03:18:16.511 [debug] QUERY OK source="sources" db=0.1ms idle=533.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:16.511 [debug] QUERY OK source="sources" db=0.0ms idle=125.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] 03:18:16.512 [debug] QUERY OK source="media_items" db=0.3ms idle=126.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-09 09:01:06Z], 6] 03:18:16.516 [debug] QUERY OK source="media_items" db=3.4ms idle=126.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", "6a74e3fc-6337-4022-b63f-dcca1f5efe02", false, 1697, false, "gXHrvwwZ7Yo", "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", 30, "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", false, false, 6, [], 1, ~U[2025-05-09 09:01:06Z], ~U[2026-10-17 03:18:16Z], ~U[2026-10-17 03:18:16Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", 1697, false, "gXHrvwwZ7Yo", "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", false, 6, ~U[2025-05-09 09:01:06Z]] 03:18:16.516 [debug] QUERY OK source="sources" db=0.1ms idle=130.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" = ?) [6] 03:18:16.516 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:18:16.517 [debug] QUERY OK source="media_items" db=0.1ms idle=5.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 [16056] 03:18:16.517 [debug] Current batch of media processed. Will check again in 1000ms 03:18:17.518 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1580, "filename" => "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", "id" => "rF7mWcz4scs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=rF7mWcz4scs", "playlist_index" => 31, "timestamp" => 1745571684, "title" => "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", "upload_date" => "20250425"} 03:18:17.518 [debug] QUERY OK source="sources" db=0.2ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:17.519 [debug] QUERY OK source="sources" db=0.0ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:17.519 [debug] QUERY OK source="media_items" db=0.2ms idle=1002.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-25 09:01:24Z], 6] 03:18:17.520 [debug] QUERY OK source="media_items" db=0.7ms idle=1002.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", "dc23bb3c-fca7-4b3f-a4c1-e52a216d3794", false, 1580, false, "rF7mWcz4scs", "https://www.youtube.com/watch?v=rF7mWcz4scs", 31, "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", false, false, 6, [], 1, ~U[2025-04-25 09:01:24Z], ~U[2026-10-17 03:18:17Z], ~U[2026-10-17 03:18:17Z], "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", 1580, false, "rF7mWcz4scs", "https://www.youtube.com/watch?v=rF7mWcz4scs", "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", false, 6, ~U[2025-04-25 09:01:24Z]] 03:18:17.520 [debug] QUERY OK source="sources" db=0.1ms idle=542.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:17.521 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:17.521 [debug] QUERY OK source="media_items" db=0.1ms idle=2.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16055] 03:18:17.521 [debug] Current batch of media processed. Will check again in 1000ms 03:18:18.521 [debug] Current batch of media processed. Will check again in 1000ms 03:18:19.523 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1150, "filename" => "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", "id" => "ElW8L-3sRa8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ElW8L-3sRa8", "playlist_index" => 32, "timestamp" => 1744365621, "title" => "시초가 매매 방법 | 포모의 HTS 로그인2", "upload_date" => "20250411"} 03:18:19.523 [debug] QUERY OK source="sources" db=0.2ms idle=542.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:19.524 [debug] QUERY OK source="sources" db=0.1ms idle=138.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:19.524 [debug] QUERY OK source="media_items" db=0.3ms idle=138.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-11 10:00:21Z], 6] 03:18:19.525 [debug] QUERY OK source="media_items" db=0.7ms idle=138.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "시초가 매매 방법 | 포모의 HTS 로그인2", "22765071-2c0c-4e74-9301-dd12cb1b7bec", false, 1150, false, "ElW8L-3sRa8", "https://www.youtube.com/watch?v=ElW8L-3sRa8", 32, "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", false, false, 6, [], 1, ~U[2025-04-11 10:00:21Z], ~U[2026-10-17 03:18:19Z], ~U[2026-10-17 03:18:19Z], "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "시초가 매매 방법 | 포모의 HTS 로그인2", 1150, false, "ElW8L-3sRa8", "https://www.youtube.com/watch?v=ElW8L-3sRa8", "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", false, 6, ~U[2025-04-11 10:00:21Z]] 03:18:19.525 [debug] QUERY OK source="sources" db=0.0ms idle=139.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" = ?) [6] 03:18:19.526 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:19.526 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16054] 03:18:19.526 [debug] Current batch of media processed. Will check again in 1000ms 03:18:20.526 [debug] Current batch of media processed. Will check again in 1000ms 03:18:21.528 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1083, "filename" => "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", "id" => "0O--nwabj2w", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=0O--nwabj2w", "playlist_index" => 33, "timestamp" => 1738918802, "title" => "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", "upload_date" => "20250207"} 03:18:21.528 [debug] QUERY OK source="sources" db=0.2ms idle=546.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:21.529 [debug] QUERY OK source="sources" db=0.1ms idle=143.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] 03:18:21.529 [debug] QUERY OK source="media_items" db=0.3ms idle=143.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-02-07 09:00:02Z], 6] 03:18:21.530 [debug] QUERY OK source="media_items" db=0.8ms idle=143.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", "45d6d924-85db-4ed8-88a6-0f4dd7a41c98", false, 1083, false, "0O--nwabj2w", "https://www.youtube.com/watch?v=0O--nwabj2w", 33, "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", false, false, 6, [], 1, ~U[2025-02-07 09:00:02Z], ~U[2026-10-17 03:18:21Z], ~U[2026-10-17 03:18:21Z], "#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", 1083, false, "0O--nwabj2w", "https://www.youtube.com/watch?v=0O--nwabj2w", "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", false, 6, ~U[2025-02-07 09:00:02Z]] 03:18:21.531 [debug] QUERY OK source="sources" db=0.1ms idle=145.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:21.531 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:21.531 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [16053] 03:18:21.532 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #iSqaSuX0CjE/youtube video #iSqaSuX0CjE [iSqaSuX0CjE].NA", "id" => "iSqaSuX0CjE", "original_url" => "https://www.youtube.com/watch?v=iSqaSuX0CjE", "playlist_index" => 34, "title" => "youtube video #iSqaSuX0CjE"} 03:18:21.532 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:21.532 [debug] Current batch of media processed. Will check again in 1000ms 03:18:22.533 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #_X6pPMIJW6Q/youtube video #_X6pPMIJW6Q [_X6pPMIJW6Q].NA", "id" => "_X6pPMIJW6Q", "original_url" => "https://www.youtube.com/watch?v=_X6pPMIJW6Q", "playlist_index" => 35, "title" => "youtube video #_X6pPMIJW6Q"} 03:18:22.533 [debug] QUERY OK source="sources" db=0.3ms idle=1002.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:22.533 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #9D3NFB7MVo4/youtube video #9D3NFB7MVo4 [9D3NFB7MVo4].NA", "id" => "9D3NFB7MVo4", "original_url" => "https://www.youtube.com/watch?v=9D3NFB7MVo4", "playlist_index" => 36, "title" => "youtube video #9D3NFB7MVo4"} 03:18:22.534 [debug] QUERY OK source="sources" db=0.2ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:22.534 [debug] Current batch of media processed. Will check again in 1000ms 03:18:23.535 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #eCg-XBlKuhM/youtube video #eCg-XBlKuhM [eCg-XBlKuhM].NA", "id" => "eCg-XBlKuhM", "original_url" => "https://www.youtube.com/watch?v=eCg-XBlKuhM", "playlist_index" => 37, "title" => "youtube video #eCg-XBlKuhM"} 03:18:23.535 [debug] QUERY OK source="sources" db=0.2ms idle=1001.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:23.535 [debug] Current batch of media processed. Will check again in 1000ms 03:18:24.537 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #RYj7PiZzc-I/youtube video #RYj7PiZzc-I [RYj7PiZzc-I].NA", "id" => "RYj7PiZzc-I", "original_url" => "https://www.youtube.com/watch?v=RYj7PiZzc-I", "playlist_index" => 38, "title" => "youtube video #RYj7PiZzc-I"} 03:18:24.537 [debug] QUERY OK source="sources" db=0.2ms idle=1151.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:24.537 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #DXylRA6jsWc/youtube video #DXylRA6jsWc [DXylRA6jsWc].NA", "id" => "DXylRA6jsWc", "original_url" => "https://www.youtube.com/watch?v=DXylRA6jsWc", "playlist_index" => 39, "title" => "youtube video #DXylRA6jsWc"} 03:18:24.538 [debug] QUERY OK source="sources" db=0.1ms idle=1151.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:24.538 [debug] Current batch of media processed. Will check again in 1000ms 03:18:25.538 [debug] Current batch of media processed. Will check again in 1000ms 03:18:26.540 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1164, "filename" => "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", "id" => "CrqYtu_QeDc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CrqYtu_QeDc", "playlist_index" => 40, "timestamp" => 1770973217, "title" => "분봉 차트에서 3일 이동평균선 보는 방법", "upload_date" => "20260213"} 03:18:26.540 [debug] QUERY OK source="sources" db=0.1ms idle=1154.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:26.541 [debug] QUERY OK source="sources" db=0.1ms idle=553.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] 03:18:26.541 [debug] QUERY OK source="media_items" db=0.3ms idle=155.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-13 09:00:17Z], 6] 03:18:26.542 [debug] QUERY OK source="media_items" db=0.6ms idle=155.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "분봉 차트에서 3일 이동평균선 보는 방법", "c27c09c5-c049-457a-81cd-5bbb423b82d8", false, 1164, false, "CrqYtu_QeDc", "https://www.youtube.com/watch?v=CrqYtu_QeDc", 40, "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", false, false, 6, [], 1, ~U[2026-02-13 09:00:17Z], ~U[2026-10-17 03:18:26Z], ~U[2026-10-17 03:18:26Z], "#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "분봉 차트에서 3일 이동평균선 보는 방법", 1164, false, "CrqYtu_QeDc", "https://www.youtube.com/watch?v=CrqYtu_QeDc", "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", false, 6, ~U[2026-02-13 09:00:17Z]] 03:18:26.542 [debug] QUERY OK source="sources" db=0.1ms idle=156.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" = ?) [6] 03:18:26.543 [debug] QUERY OK source="media_profiles" db=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] 03:18:26.543 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47030] 03:18:26.543 [debug] Current batch of media processed. Will check again in 1000ms 03:18:27.543 [debug] Current batch of media processed. Will check again in 1000ms 03:18:28.545 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1268, "filename" => "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", "id" => "LIxAUew7IQg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=LIxAUew7IQg", "playlist_index" => 41, "timestamp" => 1791265148, "title" => "직장인 필수 시청! 회사에서 단타하자", "upload_date" => "20261006"} 03:18:28.545 [debug] QUERY OK source="sources" db=0.1ms idle=555.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:28.545 [debug] QUERY OK source="sources" db=0.0ms idle=159.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] 03:18:28.546 [debug] QUERY OK source="media_items" db=0.2ms idle=160.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 05:39:08Z], 6] 03:18:28.547 [debug] QUERY OK source="media_items" db=0.6ms idle=160.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수 시청! 회사에서 단타하자", "350e2b20-6a6b-4dca-8143-f91c6d7a6078", false, 1268, false, "LIxAUew7IQg", "https://www.youtube.com/watch?v=LIxAUew7IQg", 41, "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", false, false, 6, [], 1, ~U[2026-10-06 05:39:08Z], ~U[2026-10-17 03:18:28Z], ~U[2026-10-17 03:18:28Z], "#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수 시청! 회사에서 단타하자", 1268, false, "LIxAUew7IQg", "https://www.youtube.com/watch?v=LIxAUew7IQg", "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", false, 6, ~U[2026-10-06 05:39:08Z]] 03:18:28.547 [debug] QUERY OK source="sources" db=0.1ms idle=161.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" = ?) [6] 03:18:28.547 [debug] QUERY OK source="media_profiles" db=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] 03:18:28.548 [debug] QUERY OK source="media_items" db=0.1ms idle=2.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47466] 03:18:28.548 [debug] Current batch of media processed. Will check again in 1000ms 03:18:29.549 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 2140, "filename" => "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", "id" => "X2s_sk20YM4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=X2s_sk20YM4", "playlist_index" => 42, "timestamp" => 1755853257, "title" => "기업분석 요약 노트 | 포모의 HTS 로그인2", "upload_date" => "20250822"} 03:18:29.549 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1002.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:29.550 [debug] QUERY OK source="sources" db=0.1ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:29.550 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-22 09:00:57Z], 6] 03:18:29.551 [debug] QUERY OK source="media_items" db=0.6ms idle=1003.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "기업분석 요약 노트 | 포모의 HTS 로그인2", "76977fcd-8dc9-4837-b8ef-5e8661b7a57c", false, 2140, false, "X2s_sk20YM4", "https://www.youtube.com/watch?v=X2s_sk20YM4", 42, "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", false, false, 6, [], 1, ~U[2025-08-22 09:00:57Z], ~U[2026-10-17 03:18:29Z], ~U[2026-10-17 03:18:29Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "기업분석 요약 노트 | 포모의 HTS 로그인2", 2140, false, "X2s_sk20YM4", "https://www.youtube.com/watch?v=X2s_sk20YM4", "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", false, 6, ~U[2025-08-22 09:00:57Z]] 03:18:29.552 [debug] QUERY OK source="sources" db=0.1ms idle=561.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" = ?) [6] 03:18:29.552 [debug] QUERY OK source="media_profiles" db=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] 03:18:29.552 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48467] 03:18:29.552 [debug] Current batch of media processed. Will check again in 1000ms 03:18:30.553 [debug] Current batch of media processed. Will check again in 1000ms 03:18:31.555 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. 한국거래소(KRX) 수수료 한시적 인하 기간('25.12.15~'26.02.13)에는 주식 거래 수수료가 0.0145%입니다. 해당 기간 이후 수수료가 변동될 수 있습니다. / 총보수, 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능 / 레버리지ETF는 원금 손실 크게 발생 가능 / 레버리지펀드의 기간 수익률은 추종하는 기초자산의 일간 수익률과 차이 발생 가능 / ETF 취득하시기 전에 투자대상, 보수·수수료 및 환매방법 등에 관하여 (간이)투자설명서를 반드시 읽어보시기 바랍니다. ※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음\n\nTIGER반도체Top10 \n(총보수*비용 0.51%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 452,750 ) \nKODEX반도체\n(총보수*비용 0.4625%, 위험등급 1등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.0125%, 직전회계연도 증권거래비용 398,932)\nKODEX AI 반도체\n(총보수*비용 0.0584%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0584%, 직전회계연도 증권거래비용 259,038)\nKIWOOM K-반도체 북미 공급\n(총보수*비용 0.8274%, 위험등급 2등급, 집합투자 0.44%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.3374%, 직전회계연도 증권거래비용 5,699) \nTIMEFOLIO K바이오액티브\n(총보수*비용 0.83%, 위험등급 2등급, 집합투자 0.69%, 지정참가 0.05%, 신탁업자 0.03%, 일반사무 0.03%, 기타 0.03%, 직전회계연도 증권거래비용 0.28)\nKOACT AI 인프라 액티브 \n(총보수*비용 0.5628%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.05%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0628%, 직전회계연도 증권거래비용 116,255) \nKOACT K 수출 핵심 기업\n(총보수*비용 0.5595%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0595%, 직전회계연도 증권거래비용 470,399) \nKODEX 자동차 ETF \n(총보수*비용 0.4629% 위험등급 2등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.129%, 직전회계연도 증권거래비용 153,216)\nKODEX 2차전지산업\n(총보수*비용 0.5515% 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.1015%, 직전회계연도 증권거래비용 760,278)\nTIGER 바이오 TOP10 \n(총보수*비용 0.44% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.04%, 직전회계연도 증권거래비용 195,746)\nKODEX AI전력핵심설비 \n(총보수*비용 0.4586% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.01%, 기타 0.0686%, 직전회계연도 증권거래비용 281,859) \nACE 원자력TOP10 \n(총보수*비용 0.3530% 위험등급 2등급, 집합투자 0.2600%, 지정참가 0.0100%, 신탁업자 0.0150%, 일반사무 0.0150%, 기타 0.0530%, 직전회계연도 증권거래비용 281,859) \nTIGER 조선TOP10 \n(총보수*비용 0.41% 위험등급 2등급, 집합투자 0.309%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 0.0559) \nKODEX K방산 TOP10 \n(총보수*비용 0.5224%, 위험등급 2등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0724%, 직전회계연도 증권거래비용 81,199)\nKODEX 로봇 액티브 \n(총보수*비용 0.5689% 위험등급 2등급, 집합투자 0.459%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0689%, 직전회계연도 증권거래비용 53,675)", "duration" => 2039, "filename" => "/downloads/포모의 HTS 로그인2/2026-10-07 ETF로 주도주 찾기/ETF로 주도주 찾기 [Bh-45IJWWgk].mp4", "id" => "Bh-45IJWWgk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Bh-45IJWWgk", "playlist_index" => 43, "timestamp" => 1791335731, "title" => "ETF로 주도주 찾기", "upload_date" => "20261007"} 03:18:31.556 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=563.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:31.556 [debug] QUERY OK source="sources" db=0.1ms idle=170.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] 03:18:31.557 [debug] QUERY OK source="media_items" db=0.3ms idle=170.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 01:15:31Z], 6] 03:18:31.558 [debug] QUERY OK source="media_items" db=1.1ms idle=171.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. 한국거래소(KRX) 수수료 한시적 인하 기간('25.12.15~'26.02.13)에는 주식 거래 수수료가 0.0145%입니다. 해당 기간 이후 수수료가 변동될 수 있습니다. / 총보수, 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능 / 레버리지ETF는 원금 손실 크게 발생 가능 / 레버리지펀드의 기간 수익률은 추종하는 기초자산의 일간 수익률과 차이 발생 가능 / ETF 취득하시기 전에 투자대상, 보수·수수료 및 환매방법 등에 관하여 (간이)투자설명서를 반드시 읽어보시기 바랍니다. ※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음\n\nTIGER반도체Top10 \n(총보수*비용 0.51%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 452,750 ) \nKODEX반도체\n(총보수*비용 0.4625%, 위험등급 1등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.0125%, 직전회계연도 증권거래비용 398,932)\nKODEX AI 반도체\n(총보수*비용 0.0584%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0584%, 직전회계연도 증권거래비용 259,038)\nKIWOOM K-반도체 북미 공급\n(총보수*비용 0.8274%, 위험등급 2등급, 집합투자 0.44%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.3374%, 직전회계연도 증권거래비용 5,699) \nTIMEFOLIO K바이오액티브\n(총보수*비용 0.83%, 위험등급 2등급, 집합투자 0.69%, 지정참가 0.05%, 신탁업자 0.03%, 일반사무 0.03%, 기타 0.03%, 직전회계연도 증권거래비용 0.28)\nKOACT AI 인프라 액티브 \n(총보수*비용 0.5628%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.05%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0628%, 직전회계연도 증권거래비용 116,255) \nKOACT K 수출 핵심 기업\n(총보수*비용 0.5595%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0595%, 직전회계연도 증권거래비용 470,399) \nKODEX 자동차 ETF \n(총보수*비용 0.4629% 위험등급 2등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.129%, 직전회계연도 증권거래비용 153,216)\nKODEX 2차전지산업\n(총보수*비용 0.5515% 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.1015%, 직전회계연도 증권거래비용 760,278)\nTIGER 바이오 TOP10 \n(총보수*비용 0.44% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.04%, 직전회계연도 증권거래비용 195,746)\nKODEX AI전력핵심설비 \n(총보수*비용 0.4586% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.01%, 기타 0.0686%, 직전회계연도 증권거래비용 281,859) \nACE 원자력TOP10 \n(총보수*비용 0.3530% 위험등급 2등급, 집합투자 0.2600%, 지정참가 0.0100%, 신탁업자 0.0150%, 일반사무 0.0150%, 기타 0.0530%, 직전회계연도 증권거래비용 281,859) \nTIGER 조선TOP10 \n(총보수*비용 0.41% 위험등급 2등급, 집합투자 0.309%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 0.0559) \nKODEX K방산 TOP10 \n(총보수*비용 0.5224%, 위험등급 2등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0724%, 직전회계연도 증권거래비용 81,199)\nKODEX 로봇 액티브 \n(총보수*비용 0.5689% 위험등급 2등급, 집합투자 0.459%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0689%, 직전회계연도 증권거래비용 53,675)", "ETF로 주도주 찾기", "fe59248e-4485-4604-933c-bb685b0219c2", false, 2039, false, "Bh-45IJWWgk", "https://www.youtube.com/watch?v=Bh-45IJWWgk", 43, "/downloads/포모의 HTS 로그인2/2026-10-07 ETF로 주도주 찾기/ETF로 주도주 찾기 [Bh-45IJWWgk].mp4", false, false, 6, [], 1, ~U[2026-10-07 01:15:31Z], ~U[2026-10-17 03:18:31Z], ~U[2026-10-17 03:18:31Z], "#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0. (truncated) 03:18:31.559 [debug] QUERY OK source="sources" db=0.1ms idle=172.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" = ?) [6] 03:18:31.559 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:18:31.559 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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 [48483] 03:18:31.559 [debug] Current batch of media processed. Will check again in 1000ms 03:18:32.449 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLNmdSYZfFnFYr_ZvC8YCnXM5wVZ5i7NjV&si=tpPXEtloWo6vqo3h --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/포모의 HTS 로그인2/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+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/0f/71/0f71de254d6cbef4df574c752b9a10c84be1da2d647014ee593d1ccf372681ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 03:18:32.452 [debug] Gracefully stopping file follower 03:18:32.452 [debug] QUERY OK source="sources" db=0.2ms idle=893.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:32.452 [debug] QUERY OK source="sources" db=0.0ms idle=893.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.453 [debug] QUERY OK source="media_items" db=0.5ms idle=893.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-25 09:00:20Z], 6] 03:18:32.454 [debug] QUERY OK source="media_items" db=0.9ms idle=893.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "내 종목만 안 오르는 진짜 이유를 찾자!", "0e91280c-8e70-410f-8ece-ba94015323ab", false, 1655, false, "niaLYJRZ7rA", "https://www.youtube.com/watch?v=niaLYJRZ7rA", 1, "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", false, false, 6, [], 1, ~U[2026-09-25 09:00:20Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "내 종목만 안 오르는 진짜 이유를 찾자!", 1655, false, "niaLYJRZ7rA", "https://www.youtube.com/watch?v=niaLYJRZ7rA", "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", false, 6, ~U[2026-09-25 09:00:20Z]] 03:18:32.455 [debug] QUERY OK source="sources" db=0.1ms idle=461.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] 03:18:32.455 [debug] QUERY OK source="media_items" db=0.3ms idle=2.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-11 09:00:27Z], 6] 03:18:32.456 [debug] QUERY OK source="media_items" db=0.8ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "조건검색식, 기초부터 실전 매매 세팅까지!", "dd6611f1-6934-4905-a204-8a2e4fc49881", false, 2954, false, "4nSxuddnkXk", "https://www.youtube.com/watch?v=4nSxuddnkXk", 2, "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", false, false, 6, [], 1, ~U[2026-09-11 09:00:27Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "조건검색식, 기초부터 실전 매매 세팅까지!", 2954, false, "4nSxuddnkXk", "https://www.youtube.com/watch?v=4nSxuddnkXk", "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", false, 6, ~U[2026-09-11 09:00:27Z]] 03:18:32.457 [debug] QUERY OK source="sources" db=0.2ms idle=3.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.457 [debug] QUERY OK source="media_items" db=0.3ms idle=2.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-28 09:00:37Z], 6] 03:18:32.459 [debug] QUERY OK source="media_items" db=1.0ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "기초부터 복습까지! HTS 수식관리자 총정리", "f3a23fbf-6d22-4c60-9503-d2ae3f1f059b", false, 3091, false, "du0PkCrFwgY", "https://www.youtube.com/watch?v=du0PkCrFwgY", 3, "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", false, false, 6, [], 1, ~U[2026-08-28 09:00:37Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "기초부터 복습까지! HTS 수식관리자 총정리", 3091, false, "du0PkCrFwgY", "https://www.youtube.com/watch?v=du0PkCrFwgY", "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", false, 6, ~U[2026-08-28 09:00:37Z]] 03:18:32.459 [debug] QUERY OK source="sources" db=0.1ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.460 [debug] QUERY OK source="media_items" db=0.3ms idle=3.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-23 08:00:11Z], 6] 03:18:32.461 [debug] QUERY OK source="media_items" db=0.7ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "돈 들어오는 구간 찾는 방법!", "79a2b0be-5649-4254-a16b-c89799bd1238", false, 2061, false, "1crrXULrqyk", "https://www.youtube.com/watch?v=1crrXULrqyk", 4, "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", false, false, 6, [], 1, ~U[2026-08-23 08:00:11Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "돈 들어오는 구간 찾는 방법!", 2061, false, "1crrXULrqyk", "https://www.youtube.com/watch?v=1crrXULrqyk", "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", false, 6, ~U[2026-08-23 08:00:11Z]] 03:18:32.461 [debug] QUERY OK source="sources" db=0.1ms idle=3.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.462 [debug] QUERY OK source="media_items" db=0.3ms idle=2.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-22 08:00:37Z], 6] 03:18:32.463 [debug] QUERY OK source="media_items" db=0.8ms idle=2.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", "06ec1659-f92d-4a37-a0b0-0e752ee23053", false, 1519, false, "xJ7md1FoEBY", "https://www.youtube.com/watch?v=xJ7md1FoEBY", 5, "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", false, false, 6, [], 1, ~U[2026-08-22 08:00:37Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", 1519, false, "xJ7md1FoEBY", "https://www.youtube.com/watch?v=xJ7md1FoEBY", "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", false, 6, ~U[2026-08-22 08:00:37Z]] 03:18:32.463 [debug] QUERY OK source="sources" db=0.1ms idle=3.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] 03:18:32.463 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-21 08:00:38Z], 6] 03:18:32.464 [debug] QUERY OK source="media_items" db=0.6ms idle=2.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "지수보다 강한 놈을 잡아 전략짜자!", "4d6a6ebd-d281-45e8-acad-a749a005e73e", false, 2564, false, "OtMK7cTvUwI", "https://www.youtube.com/watch?v=OtMK7cTvUwI", 6, "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", false, false, 6, [], 1, ~U[2026-08-21 08:00:38Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "지수보다 강한 놈을 잡아 전략짜자!", 2564, false, "OtMK7cTvUwI", "https://www.youtube.com/watch?v=OtMK7cTvUwI", "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", false, 6, ~U[2026-08-21 08:00:38Z]] 03:18:32.465 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.465 [debug] QUERY OK source="media_items" db=0.2ms idle=2.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-20 08:00:24Z], 6] 03:18:32.466 [debug] QUERY OK source="media_items" db=0.8ms idle=2.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", "b3ed6eac-199c-4d42-acc7-a23f0e0d6552", false, 1887, false, "Y0QXcAemBJ4", "https://www.youtube.com/watch?v=Y0QXcAemBJ4", 7, "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", false, false, 6, [], 1, ~U[2026-08-20 08:00:24Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", 1887, false, "Y0QXcAemBJ4", "https://www.youtube.com/watch?v=Y0QXcAemBJ4", "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", false, 6, ~U[2026-08-20 08:00:24Z]] 03:18:32.466 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.467 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-19 08:00:38Z], 6] 03:18:32.468 [debug] QUERY OK source="media_items" db=0.6ms idle=2.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "복잡한 수급 데이터 이 화면 하나로 끝!", "6bd426d4-9a5f-4a07-99da-8ba06255c423", false, 1448, false, "VzxZsZLorcg", "https://www.youtube.com/watch?v=VzxZsZLorcg", 8, "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", false, false, 6, [], 1, ~U[2026-08-19 08:00:38Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "복잡한 수급 데이터 이 화면 하나로 끝!", 1448, false, "VzxZsZLorcg", "https://www.youtube.com/watch?v=VzxZsZLorcg", "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", false, 6, ~U[2026-08-19 08:00:38Z]] 03:18:32.468 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.468 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-18 08:00:35Z], 6] 03:18:32.471 [debug] QUERY OK source="media_items" db=2.8ms idle=1.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "패닉 셀 하기 전 반드시 확인해야 할 것", "f48832fb-4c4e-4c66-9618-b0c66db133b0", false, 2108, false, "CWAN_vfIkA4", "https://www.youtube.com/watch?v=CWAN_vfIkA4", 9, "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", false, false, 6, [], 1, ~U[2026-08-18 08:00:35Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "패닉 셀 하기 전 반드시 확인해야 할 것", 2108, false, "CWAN_vfIkA4", "https://www.youtube.com/watch?v=CWAN_vfIkA4", "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", false, 6, ~U[2026-08-18 08:00:35Z]] 03:18:32.472 [debug] QUERY OK source="sources" db=0.1ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.473 [debug] QUERY OK source="media_items" db=0.3ms idle=4.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-31 09:00:31Z], 6] 03:18:32.474 [debug] QUERY OK source="media_items" db=0.9ms idle=4.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", "22f8fcf7-ca67-47bc-b9de-abf6c39cc908", false, 2653, false, "F_urGvb5_RU", "https://www.youtube.com/watch?v=F_urGvb5_RU", 10, "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", false, false, 6, [], 1, ~U[2026-07-31 09:00:31Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", 2653, false, "F_urGvb5_RU", "https://www.youtube.com/watch?v=F_urGvb5_RU", "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", false, 6, ~U[2026-07-31 09:00:31Z]] 03:18:32.474 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.475 [debug] QUERY OK source="media_items" db=0.4ms idle=2.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-17 09:00:30Z], 6] 03:18:32.476 [debug] QUERY OK source="media_items" db=1.2ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "시장이 힘들 때 대비하는 전략", "57777bbc-3432-457b-9764-2eab465d41ca", false, 2077, false, "gZTpk4n_PDw", "https://www.youtube.com/watch?v=gZTpk4n_PDw", 11, "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", false, false, 6, [], 1, ~U[2026-07-17 09:00:30Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "시장이 힘들 때 대비하는 전략", 2077, false, "gZTpk4n_PDw", "https://www.youtube.com/watch?v=gZTpk4n_PDw", "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", false, 6, ~U[2026-07-17 09:00:30Z]] 03:18:32.477 [debug] QUERY OK source="sources" db=0.2ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.477 [debug] QUERY OK source="media_items" db=0.3ms idle=3.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-03 09:00:33Z], 6] 03:18:32.479 [debug] QUERY OK source="media_items" db=0.8ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", "9a42520e-b5c9-4f5c-b4cf-8c8fa8ccae69", false, 1296, false, "tJDQVqRzklM", "https://www.youtube.com/watch?v=tJDQVqRzklM", 12, "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", false, false, 6, [], 1, ~U[2026-07-03 09:00:33Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", 1296, false, "tJDQVqRzklM", "https://www.youtube.com/watch?v=tJDQVqRzklM", "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", false, 6, ~U[2026-07-03 09:00:33Z]] 03:18:32.479 [debug] QUERY OK source="sources" db=0.1ms idle=4.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.479 [debug] QUERY OK source="media_items" db=0.3ms idle=2.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-05 09:00:26Z], 6] 03:18:32.481 [debug] QUERY OK source="media_items" db=0.8ms idle=2.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", "4afb0998-c657-4b0a-ac58-2f9d0da62d52", false, 2386, false, "bb2pO2nGHf0", "https://www.youtube.com/watch?v=bb2pO2nGHf0", 13, "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", false, false, 6, [], 1, ~U[2026-06-05 09:00:26Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", 2386, false, "bb2pO2nGHf0", "https://www.youtube.com/watch?v=bb2pO2nGHf0", "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", false, 6, ~U[2026-06-05 09:00:26Z]] 03:18:32.481 [debug] QUERY OK source="sources" db=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.481 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-03 09:00:17Z], 6] 03:18:32.527 [debug] QUERY OK source="media_items" db=45.1ms idle=2.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", "2bfb69f9-a719-4cb4-96ac-295629024216", false, 1391, false, "Eb02sSekWo8", "https://www.youtube.com/watch?v=Eb02sSekWo8", 14, "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", false, false, 6, [], 1, ~U[2026-04-03 09:00:17Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", 1391, false, "Eb02sSekWo8", "https://www.youtube.com/watch?v=Eb02sSekWo8", "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", false, 6, ~U[2026-04-03 09:00:17Z]] 03:18:32.527 [debug] QUERY OK source="sources" db=0.2ms idle=47.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] 03:18:32.528 [debug] QUERY OK source="media_items" db=0.3ms idle=46.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-30 09:00:17Z], 6] 03:18:32.536 [debug] QUERY OK source="media_items" db=8.3ms idle=47.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "저가 매수 타이밍을 알아보자!", "f78ed4fd-5668-4c36-9dcd-a06a4cd1579b", false, 1459, false, "8EoH-ULFH50", "https://www.youtube.com/watch?v=8EoH-ULFH50", 15, "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", false, false, 6, [], 1, ~U[2026-01-30 09:00:17Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "저가 매수 타이밍을 알아보자!", 1459, false, "8EoH-ULFH50", "https://www.youtube.com/watch?v=8EoH-ULFH50", "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", false, 6, ~U[2026-01-30 09:00:17Z]] 03:18:32.537 [debug] QUERY OK source="sources" db=0.2ms idle=55.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.538 [debug] QUERY OK source="media_items" db=0.4ms idle=10.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-16 09:00:06Z], 6] 03:18:32.539 [debug] QUERY OK source="media_items" db=0.8ms idle=10.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수, 종가배팅이 답인 이유!", "5203f72c-a1a7-4fee-a470-b876a351ef37", false, 1203, false, "2mDQr3dUTCI", "https://www.youtube.com/watch?v=2mDQr3dUTCI", 16, "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", false, false, 6, [], 1, ~U[2026-01-16 09:00:06Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수, 종가배팅이 답인 이유!", 1203, false, "2mDQr3dUTCI", "https://www.youtube.com/watch?v=2mDQr3dUTCI", "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", false, 6, ~U[2026-01-16 09:00:06Z]] 03:18:32.540 [debug] QUERY OK source="sources" db=0.1ms idle=11.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.540 [debug] QUERY OK source="media_items" db=0.3ms idle=3.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-02 09:01:25Z], 6] 03:18:32.541 [debug] QUERY OK source="media_items" db=0.6ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "여러가지 조건을 동시에 만족하는 자동주문법", "3740285b-0a4a-4f2b-b522-d46b55685a9f", false, 1124, false, "qwWeJE9Uzp4", "https://www.youtube.com/watch?v=qwWeJE9Uzp4", 17, "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", false, false, 6, [], 1, ~U[2026-01-02 09:01:25Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "여러가지 조건을 동시에 만족하는 자동주문법", 1124, false, "qwWeJE9Uzp4", "https://www.youtube.com/watch?v=qwWeJE9Uzp4", "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", false, 6, ~U[2026-01-02 09:01:25Z]] 03:18:32.541 [debug] QUERY OK source="sources" db=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.542 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-14 09:00:21Z], 6] 03:18:32.542 [debug] QUERY OK source="media_items" db=0.5ms idle=2.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "오늘 급등하는 주도주로 트레이딩하자", "10c79e0f-66fd-4a8b-aab4-c87f07b383b7", false, 1913, false, "C_UQnz3-1oM", "https://www.youtube.com/watch?v=C_UQnz3-1oM", 20, "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", false, false, 6, [], 1, ~U[2025-11-14 09:00:21Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "오늘 급등하는 주도주로 트레이딩하자", 1913, false, "C_UQnz3-1oM", "https://www.youtube.com/watch?v=C_UQnz3-1oM", "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", false, 6, ~U[2025-11-14 09:00:21Z]] 03:18:32.543 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.543 [debug] QUERY OK source="media_items" db=0.2ms idle=1.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-17 09:00:06Z], 6] 03:18:32.544 [debug] QUERY OK source="media_items" db=0.5ms idle=1.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", "0f7b4164-7527-4869-be4c-4141c779f6c1", false, 2462, false, "1_2-VnhSwVg", "https://www.youtube.com/watch?v=1_2-VnhSwVg", 21, "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", false, false, 6, [], 1, ~U[2025-10-17 09:00:06Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", 2462, false, "1_2-VnhSwVg", "https://www.youtube.com/watch?v=1_2-VnhSwVg", "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", false, 6, ~U[2025-10-17 09:00:06Z]] 03:18:32.544 [debug] QUERY OK source="sources" db=0.1ms idle=2.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.544 [debug] QUERY OK source="media_items" db=0.2ms idle=1.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-03 09:01:03Z], 6] 03:18:32.545 [debug] QUERY OK source="media_items" db=0.5ms idle=2.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", "5f8c8933-b9e2-4e08-8952-3e10fdddaadf", false, 1963, false, "_OoTXq95EmU", "https://www.youtube.com/watch?v=_OoTXq95EmU", 22, "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", false, false, 6, [], 1, ~U[2025-10-03 09:01:03Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", 1963, false, "_OoTXq95EmU", "https://www.youtube.com/watch?v=_OoTXq95EmU", "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", false, 6, ~U[2025-10-03 09:01:03Z]] 03:18:32.546 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.546 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 09:01:28Z], 6] 03:18:32.547 [debug] QUERY OK source="media_items" db=0.5ms idle=1.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", "acfa53f5-e378-4145-97f8-b24e2116aa8b", false, 1715, false, "uEpQQiAI-xM", "https://www.youtube.com/watch?v=uEpQQiAI-xM", 23, "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", false, false, 6, [], 1, ~U[2025-09-12 09:01:28Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", 1715, false, "uEpQQiAI-xM", "https://www.youtube.com/watch?v=uEpQQiAI-xM", "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", false, 6, ~U[2025-09-12 09:01:28Z]] 03:18:32.547 [debug] QUERY OK source="sources" db=0.1ms idle=2.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.547 [debug] QUERY OK source="media_items" db=0.2ms idle=1.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-08 09:01:40Z], 6] 03:18:32.548 [debug] QUERY OK source="media_items" db=0.5ms idle=1.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", "a254e020-0e46-462f-9577-15b155129dd7", false, 1827, false, "wbnk5XJUPAk", "https://www.youtube.com/watch?v=wbnk5XJUPAk", 24, "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", false, false, 6, [], 1, ~U[2025-08-08 09:01:40Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", 1827, false, "wbnk5XJUPAk", "https://www.youtube.com/watch?v=wbnk5XJUPAk", "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", false, 6, ~U[2025-08-08 09:01:40Z]] 03:18:32.548 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.549 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-18 09:00:06Z], 6] 03:18:32.550 [debug] QUERY OK source="media_items" db=0.5ms idle=2.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", "07ccfc49-556f-4611-a3b7-19dbba8c8251", false, 1750, false, "19LkkcdjqbY", "https://www.youtube.com/watch?v=19LkkcdjqbY", 25, "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", false, false, 6, [], 1, ~U[2025-07-18 09:00:06Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", 1750, false, "19LkkcdjqbY", "https://www.youtube.com/watch?v=19LkkcdjqbY", "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", false, 6, ~U[2025-07-18 09:00:06Z]] 03:18:32.550 [debug] QUERY OK source="sources" db=0.1ms idle=2.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.550 [debug] QUERY OK source="media_items" db=0.2ms idle=2.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-04 09:00:37Z], 6] 03:18:32.551 [debug] QUERY OK source="media_items" db=0.7ms idle=2.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", "812f3b75-376d-4280-8729-618cb7939c10", false, 1848, false, "MMbBPNJuxqQ", "https://www.youtube.com/watch?v=MMbBPNJuxqQ", 26, "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", false, false, 6, [], 1, ~U[2025-07-04 09:00:37Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", 1848, false, "MMbBPNJuxqQ", "https://www.youtube.com/watch?v=MMbBPNJuxqQ", "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", false, 6, ~U[2025-07-04 09:00:37Z]] 03:18:32.552 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.552 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-20 09:00:29Z], 6] 03:18:32.555 [debug] QUERY OK source="media_items" db=2.5ms idle=2.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", "965cc61a-e22c-4fde-8b42-8264a1b10de3", false, 2005, false, "KpLlQK-f0IE", "https://www.youtube.com/watch?v=KpLlQK-f0IE", 27, "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", false, false, 6, [], 1, ~U[2025-06-20 09:00:29Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", 2005, false, "KpLlQK-f0IE", "https://www.youtube.com/watch?v=KpLlQK-f0IE", "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", false, 6, ~U[2025-06-20 09:00:29Z]] 03:18:32.556 [debug] QUERY OK source="sources" db=0.4ms idle=5.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.556 [debug] QUERY OK source="media_items" db=0.3ms idle=4.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-06 09:01:06Z], 6] 03:18:32.558 [debug] QUERY OK source="media_items" db=0.6ms idle=4.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", "7f5ea0e4-0937-4e36-a7d6-ed0594c91f2e", false, 1544, false, "fEv0qCkgXKk", "https://www.youtube.com/watch?v=fEv0qCkgXKk", 28, "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", false, false, 6, [], 1, ~U[2025-06-06 09:01:06Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", 1544, false, "fEv0qCkgXKk", "https://www.youtube.com/watch?v=fEv0qCkgXKk", "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", false, 6, ~U[2025-06-06 09:01:06Z]] 03:18:32.558 [debug] QUERY OK source="sources" db=0.2ms idle=5.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.559 [debug] QUERY OK source="media_items" db=0.4ms idle=3.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-23 10:00:55Z], 6] 03:18:32.560 [debug] QUERY OK source="media_items" db=0.8ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", "57a319dc-cc7c-40e6-acb5-5e079ddb09f6", false, 839, false, "Yx8Lcouocj4", "https://www.youtube.com/watch?v=Yx8Lcouocj4", 29, "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", false, false, 6, [], 1, ~U[2025-05-23 10:00:55Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", 839, false, "Yx8Lcouocj4", "https://www.youtube.com/watch?v=Yx8Lcouocj4", "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", false, 6, ~U[2025-05-23 10:00:55Z]] 03:18:32.561 [debug] QUERY OK source="sources" db=0.3ms idle=3.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.562 [debug] QUERY OK source="media_items" db=0.6ms idle=3.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-09 09:01:06Z], 6] 03:18:32.563 [debug] QUERY OK source="media_items" db=0.9ms idle=4.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", "d767c3b3-9277-4665-b6f6-4cdd0704a400", false, 1697, false, "gXHrvwwZ7Yo", "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", 30, "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", false, false, 6, [], 1, ~U[2025-05-09 09:01:06Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", 1697, false, "gXHrvwwZ7Yo", "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", false, 6, ~U[2025-05-09 09:01:06Z]] 03:18:32.564 [debug] QUERY OK source="sources" db=0.2ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.564 [debug] QUERY OK source="media_items" db=0.3ms idle=4.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-25 09:01:24Z], 6] 03:18:32.566 [debug] QUERY OK source="media_items" db=0.7ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", "1971aafd-d77b-423a-a804-a04cf254b952", false, 1580, false, "rF7mWcz4scs", "https://www.youtube.com/watch?v=rF7mWcz4scs", 31, "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", false, false, 6, [], 1, ~U[2025-04-25 09:01:24Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", 1580, false, "rF7mWcz4scs", "https://www.youtube.com/watch?v=rF7mWcz4scs", "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", false, 6, ~U[2025-04-25 09:01:24Z]] 03:18:32.566 [debug] QUERY OK source="sources" db=0.1ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.566 [debug] QUERY OK source="media_items" db=0.3ms idle=2.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-11 10:00:21Z], 6] 03:18:32.568 [debug] QUERY OK source="media_items" db=0.8ms idle=2.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "시초가 매매 방법 | 포모의 HTS 로그인2", "6a34a56c-5fcf-43db-af5e-66ef5dd4781e", false, 1150, false, "ElW8L-3sRa8", "https://www.youtube.com/watch?v=ElW8L-3sRa8", 32, "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", false, false, 6, [], 1, ~U[2025-04-11 10:00:21Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "시초가 매매 방법 | 포모의 HTS 로그인2", 1150, false, "ElW8L-3sRa8", "https://www.youtube.com/watch?v=ElW8L-3sRa8", "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", false, 6, ~U[2025-04-11 10:00:21Z]] 03:18:32.568 [debug] QUERY OK source="sources" db=0.2ms idle=3.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.569 [debug] QUERY OK source="media_items" db=0.3ms idle=2.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-02-07 09:00:02Z], 6] 03:18:32.570 [debug] QUERY OK source="media_items" db=0.9ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", "4e70878e-6551-493e-97b4-846f89ebdf83", false, 1083, false, "0O--nwabj2w", "https://www.youtube.com/watch?v=0O--nwabj2w", 33, "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", false, false, 6, [], 1, ~U[2025-02-07 09:00:02Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", 1083, false, "0O--nwabj2w", "https://www.youtube.com/watch?v=0O--nwabj2w", "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", false, 6, ~U[2025-02-07 09:00:02Z]] 03:18:32.571 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.571 [debug] QUERY OK source="media_items" db=0.3ms idle=3.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-13 09:00:17Z], 6] 03:18:32.573 [debug] QUERY OK source="media_items" db=0.9ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "분봉 차트에서 3일 이동평균선 보는 방법", "95392641-0416-4315-b15a-cc88dcc7cab4", false, 1164, false, "CrqYtu_QeDc", "https://www.youtube.com/watch?v=CrqYtu_QeDc", 40, "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", false, false, 6, [], 1, ~U[2026-02-13 09:00:17Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "분봉 차트에서 3일 이동평균선 보는 방법", 1164, false, "CrqYtu_QeDc", "https://www.youtube.com/watch?v=CrqYtu_QeDc", "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", false, 6, ~U[2026-02-13 09:00:17Z]] 03:18:32.573 [debug] QUERY OK source="sources" db=0.2ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.574 [debug] QUERY OK source="media_items" db=0.3ms idle=3.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 05:39:08Z], 6] 03:18:32.575 [debug] QUERY OK source="media_items" db=1.0ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수 시청! 회사에서 단타하자", "29c6839d-49cf-4c0d-a126-edc81112d148", false, 1268, false, "LIxAUew7IQg", "https://www.youtube.com/watch?v=LIxAUew7IQg", 41, "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", false, false, 6, [], 1, ~U[2026-10-06 05:39:08Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수 시청! 회사에서 단타하자", 1268, false, "LIxAUew7IQg", "https://www.youtube.com/watch?v=LIxAUew7IQg", "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", false, 6, ~U[2026-10-06 05:39:08Z]] 03:18:32.576 [debug] QUERY OK source="sources" db=0.2ms idle=4.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.576 [debug] QUERY OK source="media_items" db=0.3ms idle=3.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-22 09:00:57Z], 6] 03:18:32.577 [debug] QUERY OK source="media_items" db=0.7ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "기업분석 요약 노트 | 포모의 HTS 로그인2", "122b2db9-2e0f-4b38-b19c-cb86d78610c2", false, 2140, false, "X2s_sk20YM4", "https://www.youtube.com/watch?v=X2s_sk20YM4", 42, "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", false, false, 6, [], 1, ~U[2025-08-22 09:00:57Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "기업분석 요약 노트 | 포모의 HTS 로그인2", 2140, false, "X2s_sk20YM4", "https://www.youtube.com/watch?v=X2s_sk20YM4", "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", false, 6, ~U[2025-08-22 09:00:57Z]] 03:18:32.578 [debug] QUERY OK source="sources" db=0.3ms idle=3.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.578 [debug] QUERY OK source="media_items" db=0.3ms idle=3.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 01:15:31Z], 6] 03:18:32.580 [debug] QUERY OK source="media_items" db=1.4ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. 한국거래소(KRX) 수수료 한시적 인하 기간('25.12.15~'26.02.13)에는 주식 거래 수수료가 0.0145%입니다. 해당 기간 이후 수수료가 변동될 수 있습니다. / 총보수, 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능 / 레버리지ETF는 원금 손실 크게 발생 가능 / 레버리지펀드의 기간 수익률은 추종하는 기초자산의 일간 수익률과 차이 발생 가능 / ETF 취득하시기 전에 투자대상, 보수·수수료 및 환매방법 등에 관하여 (간이)투자설명서를 반드시 읽어보시기 바랍니다. ※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음\n\nTIGER반도체Top10 \n(총보수*비용 0.51%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 452,750 ) \nKODEX반도체\n(총보수*비용 0.4625%, 위험등급 1등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.0125%, 직전회계연도 증권거래비용 398,932)\nKODEX AI 반도체\n(총보수*비용 0.0584%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0584%, 직전회계연도 증권거래비용 259,038)\nKIWOOM K-반도체 북미 공급\n(총보수*비용 0.8274%, 위험등급 2등급, 집합투자 0.44%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.3374%, 직전회계연도 증권거래비용 5,699) \nTIMEFOLIO K바이오액티브\n(총보수*비용 0.83%, 위험등급 2등급, 집합투자 0.69%, 지정참가 0.05%, 신탁업자 0.03%, 일반사무 0.03%, 기타 0.03%, 직전회계연도 증권거래비용 0.28)\nKOACT AI 인프라 액티브 \n(총보수*비용 0.5628%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.05%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0628%, 직전회계연도 증권거래비용 116,255) \nKOACT K 수출 핵심 기업\n(총보수*비용 0.5595%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0595%, 직전회계연도 증권거래비용 470,399) \nKODEX 자동차 ETF \n(총보수*비용 0.4629% 위험등급 2등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.129%, 직전회계연도 증권거래비용 153,216)\nKODEX 2차전지산업\n(총보수*비용 0.5515% 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.1015%, 직전회계연도 증권거래비용 760,278)\nTIGER 바이오 TOP10 \n(총보수*비용 0.44% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.04%, 직전회계연도 증권거래비용 195,746)\nKODEX AI전력핵심설비 \n(총보수*비용 0.4586% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.01%, 기타 0.0686%, 직전회계연도 증권거래비용 281,859) \nACE 원자력TOP10 \n(총보수*비용 0.3530% 위험등급 2등급, 집합투자 0.2600%, 지정참가 0.0100%, 신탁업자 0.0150%, 일반사무 0.0150%, 기타 0.0530%, 직전회계연도 증권거래비용 281,859) \nTIGER 조선TOP10 \n(총보수*비용 0.41% 위험등급 2등급, 집합투자 0.309%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 0.0559) \nKODEX K방산 TOP10 \n(총보수*비용 0.5224%, 위험등급 2등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0724%, 직전회계연도 증권거래비용 81,199)\nKODEX 로봇 액티브 \n(총보수*비용 0.5689% 위험등급 2등급, 집합투자 0.459%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0689%, 직전회계연도 증권거래비용 53,675)", "ETF로 주도주 찾기", "78ab2417-38ba-4e4f-9d84-29a95f4da58b", false, 2039, false, "Bh-45IJWWgk", "https://www.youtube.com/watch?v=Bh-45IJWWgk", 43, "/downloads/포모의 HTS 로그인2/2026-10-07 ETF로 주도주 찾기/ETF로 주도주 찾기 [Bh-45IJWWgk].mp4", false, false, 6, [], 1, ~U[2026-10-07 01:15:31Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0.01 (truncated) 03:18:32.581 [debug] QUERY OK source="sources" db=0.1ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:32.582 [debug] QUERY OK source="media_items" db=0.3ms idle=3.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 09:00:15Z], 6] 03:18:32.583 [debug] QUERY OK source="media_items" db=0.9ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#수식관리자 #지지선 #영웅문4\n\n⚡오늘의 기능⚡\n특정 조건 지점을 기준으로 라인 표현하기\n\n00:00 특정 조건 지점을 기준으로 라인 표현하기 (ValueWhen)\n00:32 ValueWhen 기본 구조 이해하기\n03:05 거래대금 1,000억, 등락률 10% 이상 기준봉 추척\n11:53 20일 평균 거래량 대비 급증 캔들 지지선 \n17:35 캔들의 고가~저가 구간을 색상으로 음영 밴드 만들기\n21:34 20일 이동평균선 상향돌파 지지선\n26:30 다음영상\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01560호(26.10.16~27.10.15)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 터진 캔들에 지지선 자동으로 넣기", "51bb447c-0e4b-4ca9-a80a-0e9bbb655b47", false, 1597, false, "v7WHgX5FR9o", "https://www.youtube.com/watch?v=v7WHgX5FR9o", 44, "/downloads/포모의 HTS 로그인2/2026-10-16 거래량 터진 캔들에 지지선 자동으로 넣기/거래량 터진 캔들에 지지선 자동으로 넣기 [v7WHgX5FR9o].mp4", false, false, 6, [], 1, ~U[2026-10-16 09:00:15Z], ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], "#수식관리자 #지지선 #영웅문4\n\n⚡오늘의 기능⚡\n특정 조건 지점을 기준으로 라인 표현하기\n\n00:00 특정 조건 지점을 기준으로 라인 표현하기 (ValueWhen)\n00:32 ValueWhen 기본 구조 이해하기\n03:05 거래대금 1,000억, 등락률 10% 이상 기준봉 추척\n11:53 20일 평균 거래량 대비 급증 캔들 지지선 \n17:35 캔들의 고가~저가 구간을 색상으로 음영 밴드 만들기\n21:34 20일 이동평균선 상향돌파 지지선\n26:30 다음영상\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01560호(26.10.16~27.10.15)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 터진 캔들에 지지선 자동으로 넣기", 1597, false, "v7WHgX5FR9o", "https://www.youtube.com/watch?v=v7WHgX5FR9o", "/downloads/포모의 HTS 로그인2/2026-10-16 거래량 터진 캔들에 지지선 자동으로 넣기/거래량 터진 캔들에 지지선 자동으로 넣기 [v7WHgX5FR9o].mp4", false, 6, ~U[2026-10-16 09:00:15Z]] 03:18:32.583 [debug] QUERY OK source="sources" db=0.1ms idle=4.6ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z], 6] 03:18:32.584 [debug] QUERY OK source="media_items" db=0.3ms idle=3.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:18:32.584 [debug] QUERY OK source="media_items" db=0.3ms idle=3.0ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 03:18:32.585 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 03:18:32.586 [debug] QUERY OK source="tasks" db=0.2ms idle=2.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16333, 6, ~U[2026-10-17 03:18:32Z], ~U[2026-10-17 03:18:32Z]] 03:18:32.587 [info] {"args":{"id":6},"id":16294,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":62657251,"event":"job:stop","queue_time":815931,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:18:34.397 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:19:00.885 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:19:04.399 [info] {"source":"oban","duration":1011,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:19:34.402 [info] {"source":"oban","duration":1381,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:20:00.886 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:20:04.403 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:20:34.405 [info] {"source":"oban","duration":1127,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:20:48.141 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792207248141536944,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:20:48.142 [debug] QUERY OK source="media_items" db=0.3ms idle=1753.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" = ?) [5378] 03:20:48.142 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:20:48.142 [debug] QUERY OK source="sources" db=0.2ms idle=1754.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" = ?) [3] 03:20:48.143 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1009.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] 03:20:48.143 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [5378] 03:20:48.180 [debug] QUERY OK source="media_metadata" db=0.2ms queue=0.1ms idle=38.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [5378] 03:20:48.181 [debug] QUERY OK source="media_profiles" db=0.1ms idle=38.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] 03:20:48.181 [debug] QUERY OK source="settings" db=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 [] 03:20:48.181 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:20:48.181 [debug] Running yt-dlp command for action: get_downloadable_status 03:20:48.182 [debug] QUERY OK source="settings" db=0.0ms idle=38.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:20:48.182 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:20:48.182 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:20:48.182 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a5/93/a5933782f11f96c718300f9b19099b86e98b22c10c9d56517bd0320ddc1b8749.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:20:49.501 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a5/93/a5933782f11f96c718300f9b19099b86e98b22c10c9d56517bd0320ddc1b8749.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:20:49.502 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:20:49.502 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1360801,"event":"job:exception","queue_time":145971,"attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:20:58.151 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792207258151509465,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:20:58.152 [debug] QUERY OK source="media_items" db=0.2ms idle=763.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" = ?) [13717] 03:20:58.152 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:20:58.152 [debug] QUERY OK source="sources" db=0.1ms idle=764.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" = ?) [3] 03:20:58.152 [debug] QUERY OK source="media_profiles" db=0.1ms idle=764.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] 03:20:58.153 [debug] QUERY OK source="media_items" db=0.1ms idle=7.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13717] 03:20:58.153 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [13717] 03:20:58.153 [debug] QUERY OK source="media_profiles" db=0.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] 03:20:58.154 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:20:58.154 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:20:58.154 [debug] Running yt-dlp command for action: get_downloadable_status 03:20:58.154 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:20:58.155 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:20:58.155 [debug] QUERY OK source="settings" db=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 [] 03:20:58.155 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/ba/b1baf3187f2566c3f0b41269c1cabb1870a2781646fa6b38c0d70a179bdd5fbf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:20:59.519 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/ba/b1baf3187f2566c3f0b41269c1cabb1870a2781646fa6b38c0d70a179bdd5fbf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:20:59.520 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:20:59.520 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1368753,"event":"job:exception","queue_time":198718,"attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:21:00.887 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:21:04.407 [info] {"source":"oban","duration":1187,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:21:30.185 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792207290185780896,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:21:30.186 [debug] QUERY OK source="media_items" db=0.3ms idle=1008.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" = ?) [13649] 03:21:30.186 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:21:30.186 [debug] QUERY OK source="sources" db=0.1ms idle=798.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" = ?) [3] 03:21:30.187 [debug] QUERY OK source="media_profiles" db=0.1ms idle=798.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] 03:21:30.187 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [13649] 03:21:30.236 [debug] QUERY OK source="media_metadata" db=0.1ms idle=50.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" = ?) [13649] 03:21:30.236 [debug] QUERY OK source="media_profiles" db=0.0ms idle=49.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] 03:21:30.236 [debug] QUERY OK source="settings" db=0.0ms idle=49.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:30.236 [debug] QUERY OK source="settings" db=0.1ms idle=49.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:30.237 [debug] Running yt-dlp command for action: get_downloadable_status 03:21:30.290 [debug] QUERY OK source="settings" db=0.2ms idle=102.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:30.290 [debug] QUERY OK source="settings" db=0.0ms idle=54.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:30.290 [debug] QUERY OK source="settings" db=0.0ms idle=54.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:30.290 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/22/f5/22f50006a9e0833ac92bfb83c0bc22634274d4a9d0d72af5859682e6309cf682.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:21:31.707 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/22/f5/22f50006a9e0833ac92bfb83c0bc22634274d4a9d0d72af5859682e6309cf682.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:21:31.707 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:21:31.708 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1521931,"event":"job:exception","queue_time":218581,"attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:21:34.408 [info] {"source":"oban","duration":966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:21:46.204 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792207306203946387,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:21:46.204 [debug] QUERY OK source="media_items" db=0.2ms idle=816.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" = ?) [37712] 03:21:46.204 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:21:46.205 [debug] QUERY OK source="sources" db=0.1ms idle=816.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:21:46.205 [debug] QUERY OK source="media_profiles" db=0.1ms idle=817.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] 03:21:46.205 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [37712] 03:21:46.237 [debug] QUERY OK source="media_metadata" db=0.1ms idle=33.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [37712] 03:21:46.238 [debug] QUERY OK source="media_profiles" db=0.1ms idle=33.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] 03:21:46.238 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:21:46.238 [debug] QUERY OK source="settings" db=0.0ms idle=33.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:46.238 [debug] Running yt-dlp command for action: get_downloadable_status 03:21:46.286 [debug] QUERY OK source="settings" db=0.2ms idle=80.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:46.286 [debug] QUERY OK source="settings" db=0.0ms idle=48.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:46.286 [debug] QUERY OK source="settings" db=0.0ms idle=48.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:46.286 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/10/011045134c840f7ecfd6f4c523ea8922f9011f2db80f67f52c0c9707e360733d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:21:47.205 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792207307205670276,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:21:47.206 [debug] QUERY OK source="media_items" db=0.2ms idle=919.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" = ?) [1922] 03:21:47.206 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:21:47.206 [debug] QUERY OK source="sources" db=0.1ms idle=919.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:21:47.206 [debug] QUERY OK source="media_profiles" db=0.1ms idle=920.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] 03:21:47.207 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [1922] 03:21:47.237 [debug] QUERY OK source="media_metadata" db=0.1ms idle=31.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [1922] 03:21:47.237 [debug] QUERY OK source="media_profiles" db=0.0ms idle=31.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] 03:21:47.238 [debug] QUERY OK source="settings" db=0.0ms idle=31.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:47.238 [debug] QUERY OK source="settings" db=0.0ms idle=31.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:47.238 [debug] Running yt-dlp command for action: get_downloadable_status 03:21:47.239 [debug] QUERY OK source="settings" db=0.0ms idle=31.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:47.239 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:21:47.239 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:21:47.239 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/65/56/65569d61364079b441536482aabaeb22b4bcbbb003c0499c3857bfab3b6b25ef.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:21:47.980 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/10/011045134c840f7ecfd6f4c523ea8922f9011f2db80f67f52c0c9707e360733d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:21:47.981 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:21:47.981 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1777250,"event":"job:exception","queue_time":830508,"attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:21:48.997 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/65/56/65569d61364079b441536482aabaeb22b4bcbbb003c0499c3857bfab3b6b25ef.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:21:48.997 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:21:48.998 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1792126,"event":"job:exception","queue_time":849799,"attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:22:00.888 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:22:04.410 [info] {"source":"oban","duration":1035,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:22:34.412 [info] {"source":"oban","duration":952,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:23:00.889 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:23:04.414 [info] {"source":"oban","duration":966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:23:34.417 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:24:00.890 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:24:04.418 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:24:34.420 [info] {"source":"oban","duration":1146,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:25:00.891 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:25:04.421 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:25:34.422 [info] {"source":"oban","duration":1066,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:26:00.892 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:26:04.424 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:26:34.425 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:27:00.893 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:27:04.426 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:27:34.428 [info] {"source":"oban","duration":900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:28:00.894 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:28:04.430 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:28:34.432 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:29:00.895 [info] {"source":"oban","duration":159,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:29:04.434 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:29:34.436 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:30:00.896 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:30:04.437 [info] {"source":"oban","duration":923,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:30:34.439 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:31:00.897 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:31:04.440 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:31:34.442 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:32:00.898 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:32:04.443 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:32:34.445 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:33:00.899 [info] {"source":"oban","duration":221,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:33:04.446 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:33:34.447 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:34:00.900 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:34:04.448 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:34:34.450 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:35:00.901 [info] {"source":"oban","duration":258,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:35:04.451 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:35:34.453 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:36:00.902 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:36:04.454 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:36:34.455 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:37:00.903 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:37:04.456 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:37:34.457 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:38:00.904 [info] {"source":"oban","duration":270,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:38:04.458 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:38:25.972 [info] GET / 03:38:25.972 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:38:25.973 [debug] QUERY OK source="settings" db=0.2ms 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 [] 03:38:25.973 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1420.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:38:25.973 [debug] QUERY OK source="sources" db=0.1ms idle=1375.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:38:25.984 [debug] QUERY OK source="media_items" db=10.3ms idle=420.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:38:25.986 [debug] QUERY OK source="media_items" db=2.3ms idle=384.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:38:25.987 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:38:25.987 [debug] QUERY OK source="settings" db=0.1ms idle=13.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:38:25.988 [debug] QUERY OK source="settings" db=0.1ms idle=14.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:38:25.988 [debug] QUERY OK source="tasks" db=0.2ms idle=4.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"] 03:38:25.990 [debug] QUERY OK source="media_items" db=1.2ms idle=2.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)) [] 03:38:25.990 [debug] QUERY OK source="media_items" db=0.2ms idle=3.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:38:25.991 [debug] QUERY OK source="sources" db=0.1ms idle=3.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 (?,?,?)) [6, 4, 7] 03:38:25.999 [debug] QUERY OK source="media_items" db=7.9ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:38:26.001 [debug] QUERY OK source="media_items" db=1.2ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:38:26.002 [debug] QUERY OK source="sources" db=0.1ms 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 (?,?)) [7, 3] 03:38:26.003 [info] Sent 200 in 30ms 03:38:27.113 [info] GET / 03:38:27.113 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:38:27.113 [debug] QUERY OK source="settings" db=0.1ms idle=1122.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:38:27.113 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1114.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:38:27.114 [debug] QUERY OK source="sources" db=0.1ms idle=1112.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:38:27.123 [debug] QUERY OK source="media_items" db=8.7ms idle=1112.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:38:27.125 [debug] QUERY OK source="media_items" db=2.4ms idle=522.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:38:27.126 [debug] QUERY OK source="settings" db=0.1ms idle=12.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:38:27.126 [debug] QUERY OK source="settings" db=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 [] 03:38:27.127 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:38:27.127 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 03:38:27.129 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 03:38:27.129 [debug] QUERY OK source="media_items" db=0.3ms idle=2.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:38:27.129 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?,?)) [6, 4, 7] 03:38:27.132 [debug] QUERY OK source="media_items" db=1.8ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:38:27.133 [debug] QUERY OK source="media_items" db=0.8ms 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 INNER JOIN "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] 03:38:27.133 [debug] QUERY OK source="sources" db=0.1ms idle=4.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:38:27.134 [info] Sent 200 in 20ms 03:38:34.460 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:38:35.617 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792208315617404453,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:38:35.618 [debug] QUERY OK source="media_items" db=0.9ms idle=1064.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" = ?) [5378] 03:38:35.618 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:38:35.620 [debug] QUERY OK source="sources" db=1.1ms idle=1010.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" = ?) [3] 03:38:35.620 [debug] QUERY OK source="media_profiles" db=0.2ms idle=67.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] 03:38:35.621 [debug] QUERY OK source="media_items" db=0.3ms idle=10.7ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [5378] 03:38:35.646 [debug] QUERY OK source="media_metadata" db=0.1ms idle=28.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" = ?) [5378] 03:38:35.646 [debug] QUERY OK source="media_profiles" db=0.1ms idle=27.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:38:35.647 [debug] QUERY OK source="settings" db=0.0ms idle=26.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:38:35.647 [debug] QUERY OK source="settings" db=0.0ms idle=26.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:38:35.647 [debug] Running yt-dlp command for action: get_downloadable_status 03:38:35.647 [debug] QUERY OK source="settings" db=0.0ms idle=26.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:38:35.647 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:38:35.648 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:38:35.648 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3e/f4/3ef405edc347d297fa0cd747cc538f75cb8835bea8e614e337d17b77e69acbd6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:38:36.952 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3e/f4/3ef405edc347d297fa0cd747cc538f75cb8835bea8e614e337d17b77e69acbd6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 03:38:36.953 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 03:38:36.953 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1335820,"event":"job:exception","queue_time":113453,"attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:38:39.622 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792208319622563542,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:38:39.623 [debug] QUERY OK source="media_items" db=0.1ms idle=1008.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" = ?) [13717] 03:38:39.623 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:38:39.623 [debug] QUERY OK source="sources" db=0.1ms idle=70.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:38:39.623 [debug] QUERY OK source="media_profiles" db=0.2ms idle=70.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] 03:38:39.624 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [13717] 03:38:39.624 [debug] QUERY OK source="media_metadata" db=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" = ?) [13717] 03:38:39.625 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:38:39.625 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:38:39.625 [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 [] 03:38:39.625 [debug] Running yt-dlp command for action: get_downloadable_status 03:38:39.691 [debug] QUERY OK source="settings" db=0.2ms idle=67.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:38:39.692 [debug] QUERY OK source="settings" db=0.2ms 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 [] 03:38:39.692 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:38:39.692 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/59/b5/59b5ad602632cdf7732381dcdadb3fcfae63377816982635e17648b5da395b88.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:38:41.062 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/59/b5/59b5ad602632cdf7732381dcdadb3fcfae63377816982635e17648b5da395b88.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 03:38:41.062 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 03:38:41.062 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1439832,"event":"job:exception","queue_time":101507,"attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:39:00.905 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:39:04.463 [info] {"source":"oban","duration":1315,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:39:34.465 [info] {"source":"oban","duration":1103,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:40:00.906 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:40:04.467 [info] {"source":"oban","duration":1122,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:40:10.716 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792208410716447503,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:40:10.717 [debug] QUERY OK source="media_items" db=0.2ms idle=1163.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" = ?) [13649] 03:40:10.717 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:40:10.717 [debug] QUERY OK source="sources" db=0.1ms idle=1007.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" = ?) [3] 03:40:10.717 [debug] QUERY OK source="media_profiles" db=0.1ms idle=164.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] 03:40:10.718 [debug] QUERY OK source="media_items" db=0.1ms idle=7.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13649] 03:40:10.761 [debug] QUERY OK source="media_metadata" db=0.2ms idle=44.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" = ?) [13649] 03:40:10.761 [debug] QUERY OK source="media_profiles" db=0.1ms idle=44.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] 03:40:10.762 [debug] QUERY OK source="settings" db=0.1ms idle=44.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:40:10.762 [debug] QUERY OK source="settings" db=0.0ms idle=44.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:40:10.762 [debug] Running yt-dlp command for action: get_downloadable_status 03:40:10.763 [debug] QUERY OK source="settings" db=0.0ms idle=44.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:40:10.763 [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 [] 03:40:10.763 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:40:10.763 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7e/04/7e0470e0453d488dd5d0ec7dd48ccea5b092653920d6c63326c402de924133a3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:40:12.155 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7e/04/7e0470e0453d488dd5d0ec7dd48ccea5b092653920d6c63326c402de924133a3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 03:40:12.155 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 03:40:12.156 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1439209,"event":"job:exception","queue_time":8045,"attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:40:12.719 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792208412719594210,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:40:12.720 [debug] QUERY OK source="media_items" db=0.1ms idle=557.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" = ?) [1922] 03:40:12.720 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:40:12.720 [debug] QUERY OK source="sources" db=0.1ms idle=167.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:40:12.720 [debug] QUERY OK source="media_profiles" db=0.1ms idle=167.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] 03:40:12.721 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [1922] 03:40:12.721 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [1922] 03:40:12.721 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:40:12.722 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:40:12.722 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:40:12.722 [debug] Running yt-dlp command for action: get_downloadable_status 03:40:12.723 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:40:12.723 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:40:12.723 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:40:12.723 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a4/74/a474cbd36e5794699ff24dc4bf002808f8eb14e1429fd2c148eb68b0fc732521.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:40:14.440 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a4/74/a474cbd36e5794699ff24dc4bf002808f8eb14e1429fd2c148eb68b0fc732521.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:40:14.440 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:40:14.440 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1720757,"event":"job:exception","queue_time":720959,"attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:40:14.722 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792208414722826866,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:40:14.723 [debug] QUERY OK source="media_items" db=0.1ms idle=275.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" = ?) [37712] 03:40:14.723 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:40:14.723 [debug] QUERY OK source="sources" db=0.1ms idle=170.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:40:14.723 [debug] QUERY OK source="media_profiles" db=0.1ms idle=170.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] 03:40:14.724 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [37712] 03:40:14.724 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [37712] 03:40:14.725 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:40:14.725 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:40:14.725 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:40:14.725 [debug] Running yt-dlp command for action: get_downloadable_status 03:40:14.726 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:40:14.726 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:40:14.726 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:40:14.726 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a8/c4/a8c48554ef3ea239f65017d35196540003423e5d15694a42151c0c7a2f4a0e14.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:40:16.458 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a8/c4/a8c48554ef3ea239f65017d35196540003423e5d15694a42151c0c7a2f4a0e14.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 03:40:16.458 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 03:40:16.459 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1736198,"event":"job:exception","queue_time":740600,"attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:40:34.468 [info] {"source":"oban","duration":1036,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:41:00.907 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:41:04.471 [info] {"source":"oban","duration":1315,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:41:34.472 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:42:00.908 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:42:04.474 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:42:34.476 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:43:00.909 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:43:04.477 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:43:34.480 [info] {"source":"oban","duration":1188,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:44:00.910 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:44:04.481 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:44:34.483 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:45:00.911 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:45:04.485 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:45:34.486 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:46:00.912 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:46:04.487 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:46:34.489 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:47:00.913 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:47:04.490 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:47:34.491 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:48:00.914 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:48:04.493 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:48:34.495 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:49:00.915 [info] {"source":"oban","duration":379,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:49:04.496 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:49:34.498 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:50:00.917 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:50:04.500 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:50:34.501 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:51:00.918 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:51:04.502 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:51:34.504 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:52:00.919 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:52:04.506 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:52:34.507 [info] {"source":"oban","duration":690,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:53:00.920 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:53:04.508 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:53:34.509 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:54:00.921 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:54:04.510 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:54:34.511 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:55:00.922 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:55:04.512 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:55:34.513 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:56:00.923 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:56:04.515 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:56:34.516 [info] {"source":"oban","duration":731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:57:00.924 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:57:04.517 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:57:34.519 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:58:00.925 [info] {"source":"oban","duration":166,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:58:04.521 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:58:34.523 [info] {"source":"oban","duration":619,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:59:00.926 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:59:04.524 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:59:34.525 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:00:00.927 [info] {"source":"oban","duration":277,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:00:04.526 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:00:34.527 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:01:00.928 [info] {"source":"oban","duration":169,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:01:04.528 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:01:34.530 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:02:00.929 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:02:04.532 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:02:34.533 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:03:00.930 [info] {"source":"oban","duration":297,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:03:04.534 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:03:34.535 [info] {"source":"oban","duration":602,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:04:00.931 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:04:04.536 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:04:34.537 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:05:00.932 [info] {"source":"oban","duration":258,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:05:04.539 [info] {"source":"oban","duration":627,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:05:34.540 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:06:00.933 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:06:04.542 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:06:34.543 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:07:00.934 [info] {"source":"oban","duration":288,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:07:04.545 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:07:34.546 [info] {"source":"oban","duration":909,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:08:00.935 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:08:04.548 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:08:34.549 [info] {"source":"oban","duration":873,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:09:00.936 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:09:04.551 [info] {"source":"oban","duration":670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:09:34.552 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:10:00.937 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:10:04.553 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:10:34.554 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:11:00.938 [info] {"source":"oban","duration":262,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:11:04.555 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:11:34.557 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:12:00.939 [info] {"source":"oban","duration":400,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:12:04.559 [info] {"source":"oban","duration":626,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:12:34.560 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:13:00.940 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:13:04.561 [info] {"source":"oban","duration":616,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:13:06.854 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792210386854784258,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:13:06.855 [debug] QUERY OK source="media_items" db=0.3ms idle=1291.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" = ?) [5378] 04:13:06.855 [info] User scripts lifecyle file either not present or is empty. Skipping. 04:13:06.855 [debug] QUERY OK source="sources" db=0.2ms idle=1291.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:13:06.856 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1009.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] 04:13:06.856 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [5378] 04:13:06.901 [debug] QUERY OK source="media_metadata" db=0.1ms idle=46.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [5378] 04:13:06.902 [debug] QUERY OK source="media_profiles" db=0.2ms idle=46.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] 04:13:06.902 [debug] QUERY OK source="settings" db=0.1ms idle=46.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:13:06.902 [debug] QUERY OK source="settings" db=0.1ms idle=46.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:13:06.903 [debug] Running yt-dlp command for action: get_downloadable_status 04:13:06.903 [debug] QUERY OK source="settings" db=0.0ms idle=47.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:13:06.904 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:13:06.904 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:13:06.904 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f8/78/f87881f584063ff844a719c58dfbe2f20ee2be4cc1ae32b7cf8951e55db105a8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 04:13:08.320 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f8/78/f87881f584063ff844a719c58dfbe2f20ee2be4cc1ae32b7cf8951e55db105a8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 04:13:08.320 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 04:13:08.321 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1466294,"event":"job:exception","queue_time":900580,"attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:13:34.563 [info] {"source":"oban","duration":1174,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:14:00.941 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:14:04.565 [info] {"source":"oban","duration":1500,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:14:34.567 [info] {"source":"oban","duration":1244,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:15:00.942 [info] {"source":"oban","duration":532,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:15:04.568 [info] {"source":"oban","duration":564,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:15:31.011 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792210531011562068,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:15:31.012 [debug] QUERY OK source="media_items" db=0.3ms idle=445.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" = ?) [13717] 04:15:31.012 [info] User scripts lifecyle file either not present or is empty. Skipping. 04:15:31.012 [debug] QUERY OK source="sources" db=0.1ms idle=446.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:15:31.013 [debug] QUERY OK source="media_profiles" db=0.2ms idle=446.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] 04:15:31.013 [debug] QUERY OK source="media_items" db=0.1ms idle=7.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13717] 04:15:31.050 [debug] QUERY OK source="media_metadata" db=0.2ms idle=38.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" = ?) [13717] 04:15:31.050 [debug] QUERY OK source="media_profiles" db=0.1ms idle=38.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] 04:15:31.050 [debug] QUERY OK source="settings" db=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 [] 04:15:31.050 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:15:31.051 [debug] Running yt-dlp command for action: get_downloadable_status 04:15:31.077 [debug] QUERY OK source="settings" db=0.1ms 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 [] 04:15:31.077 [debug] QUERY OK source="settings" db=0.2ms idle=27.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:15:31.077 [debug] QUERY OK source="settings" db=0.0ms idle=27.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:15:31.078 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/16/d8/16d84f95caffea0b4ee0ee9288adb0dfcca3141478acbf1b95caaa3108cf62ea.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 04:15:32.437 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/16/d8/16d84f95caffea0b4ee0ee9288adb0dfcca3141478acbf1b95caaa3108cf62ea.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 04:15:32.437 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 04:15:32.438 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1426503,"event":"job:exception","queue_time":948307,"attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:15:34.570 [info] {"source":"oban","duration":1210,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:16:00.943 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:16:04.571 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:16:34.573 [info] {"source":"oban","duration":1021,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:16:54.096 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792210614096799669,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:16:54.097 [debug] QUERY OK source="media_items" db=0.1ms idle=1008.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" = ?) [13649] 04:16:54.097 [info] User scripts lifecyle file either not present or is empty. Skipping. 04:16:54.098 [debug] QUERY OK source="sources" db=0.2ms idle=360.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:16:54.098 [debug] QUERY OK source="media_profiles" db=0.1ms idle=361.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] 04:16:54.098 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [13649] 04:16:54.099 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [13649] 04:16:54.099 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 04:16:54.099 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:16:54.099 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:16:54.100 [debug] Running yt-dlp command for action: get_downloadable_status 04:16:54.100 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:16:54.100 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:16:54.100 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:16:54.100 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a3/f8/a3f8c2dbee38e55fa3bfc97c2398e9376a2fadd56bb14befa8b699db56707911.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 04:16:55.407 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a3/f8/a3f8c2dbee38e55fa3bfc97c2398e9376a2fadd56bb14befa8b699db56707911.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 04:16:55.407 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 04:16:55.408 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1311106,"event":"job:exception","queue_time":940164,"attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:17:00.944 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:17:04.576 [info] {"source":"oban","duration":1132,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:17:18.121 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792210638121502956,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:17:18.122 [debug] QUERY OK source="media_items" db=0.2ms idle=1007.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" = ?) [37712] 04:17:18.122 [info] User scripts lifecyle file either not present or is empty. Skipping. 04:17:18.122 [debug] QUERY OK source="sources" db=0.1ms idle=385.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" = ?) [3] 04:17:18.122 [debug] QUERY OK source="media_profiles" db=0.1ms idle=385.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:17:18.123 [debug] QUERY OK source="media_items" db=0.1ms idle=7.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [37712] 04:17:18.167 [debug] QUERY OK source="media_metadata" db=0.1ms idle=46.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" = ?) [37712] 04:17:18.168 [debug] QUERY OK source="media_profiles" db=0.1ms idle=45.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] 04:17:18.168 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:17:18.168 [debug] QUERY OK source="settings" db=0.0ms idle=45.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:17:18.168 [debug] Running yt-dlp command for action: get_downloadable_status 04:17:18.169 [debug] QUERY OK source="settings" db=0.0ms idle=45.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:17:18.169 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:17:18.169 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:17:18.169 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4f/59/4f5905fa6ab3e1d79651594219a969a685c5f1319f0881cb11846e621bb97c96.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 04:17:19.880 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4f/59/4f5905fa6ab3e1d79651594219a969a685c5f1319f0881cb11846e621bb97c96.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 04:17:19.880 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 04:17:19.881 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1759214,"event":"job:exception","queue_time":661749,"attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:17:34.577 [info] {"source":"oban","duration":954,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:17:46.151 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792210666151777339,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:17:46.152 [debug] QUERY OK source="media_items" db=0.2ms idle=415.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" = ?) [1922] 04:17:46.152 [info] User scripts lifecyle file either not present or is empty. Skipping. 04:17:46.152 [debug] QUERY OK source="sources" db=0.1ms idle=415.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:17:46.153 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=415.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] 04:17:46.153 [debug] QUERY OK source="media_items" db=0.2ms idle=7.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 [1922] 04:17:46.154 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.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" = ?) [1922] 04:17:46.154 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:17:46.154 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:17:46.154 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:17:46.154 [debug] Running yt-dlp command for action: get_downloadable_status 04:17:46.155 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:17:46.155 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:17:46.155 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:17:46.155 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0f/3d/0f3d98829abf2cf054a006979fc94845811d5670ad92a5d831853a9e5eb94a9e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 04:17:48.166 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0f/3d/0f3d98829abf2cf054a006979fc94845811d5670ad92a5d831853a9e5eb94a9e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 04:17:48.166 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 04:17:48.167 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":2015227,"event":"job:exception","queue_time":710449,"attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 04:18:00.945 [info] {"source":"oban","duration":221,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:18:04.580 [info] {"source":"oban","duration":1239,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:18:34.582 [info] {"source":"oban","duration":1189,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:19:00.946 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:19:04.583 [info] {"source":"oban","duration":1063,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:19:34.585 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:20:00.947 [info] {"source":"oban","duration":173,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:20:04.588 [info] {"source":"oban","duration":1202,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:20:34.589 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:21:00.948 [info] {"source":"oban","duration":251,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:21:04.591 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:21:34.594 [info] {"source":"oban","duration":1413,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:22:00.949 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:22:04.595 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:22:34.597 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:23:00.950 [info] {"source":"oban","duration":303,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:23:04.599 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:23:34.600 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:24:00.951 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:24:04.602 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:24:34.603 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:25:00.952 [info] {"source":"oban","duration":353,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:25:04.604 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:25:34.605 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:26:00.953 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:26:04.606 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:26:34.608 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:27:00.954 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:27:04.609 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:27:34.610 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:28:00.955 [info] {"source":"oban","duration":164,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:28:04.611 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:28:34.613 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:29:00.956 [info] {"source":"oban","duration":294,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:29:04.614 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:29:34.616 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:30:00.957 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:30:04.617 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:30:34.618 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:31:00.958 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:31:04.620 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:31:34.621 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:32:00.959 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:32:04.623 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:32:34.625 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:33:00.960 [info] {"source":"oban","duration":172,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:33:04.626 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:33:34.627 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:34:00.961 [info] {"source":"oban","duration":161,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:34:04.629 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:34:34.631 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:35:00.962 [info] {"source":"oban","duration":244,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:35:04.632 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:35:34.633 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:36:00.963 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:36:04.634 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:36:34.636 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:37:00.964 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:37:04.638 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:37:34.639 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:38:00.965 [info] {"source":"oban","duration":270,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:38:04.641 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:38:34.642 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:39:00.966 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:39:04.644 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:39:34.646 [info] {"source":"oban","duration":646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:40:00.967 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:40:04.647 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:40:34.649 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:41:00.968 [info] {"source":"oban","duration":252,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:41:04.650 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:41:34.651 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:42:00.969 [info] {"source":"oban","duration":171,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:42:04.652 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:42:34.653 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:43:00.970 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:43:04.654 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:43:34.656 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:44:00.971 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:44:04.658 [info] {"source":"oban","duration":1002,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:44:34.660 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:45:00.972 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:45:04.662 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:45:34.663 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:46:00.973 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:46:04.665 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:46:34.666 [info] {"source":"oban","duration":647,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:47:00.974 [info] {"source":"oban","duration":249,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:47:04.667 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:47:34.668 [info] {"source":"oban","duration":915,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:48:00.975 [info] {"source":"oban","duration":268,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:48:04.670 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:48:34.672 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:49:00.976 [info] {"source":"oban","duration":285,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:49:04.674 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:49:34.676 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:50:00.977 [info] {"source":"oban","duration":167,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:50:04.677 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:50:34.679 [info] {"source":"oban","duration":626,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:51:00.978 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:51:04.680 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:51:34.681 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:52:00.979 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:52:04.683 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:52:34.684 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:53:00.980 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:53:04.685 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:53:34.687 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:54:00.981 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:54:04.689 [info] {"source":"oban","duration":670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:54:34.690 [info] {"source":"oban","duration":769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:55:00.982 [info] {"source":"oban","duration":289,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:55:04.692 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:55:34.694 [info] {"source":"oban","duration":670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:56:00.983 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:56:04.695 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:56:34.697 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:57:00.984 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:57:04.699 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:57:34.701 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:58:00.985 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:58:04.703 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:58:34.705 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:59:00.986 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:59:04.706 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:59:34.707 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:00:00.987 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:00:04.709 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:00:34.710 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:01:00.988 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:01:04.711 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:01:34.712 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:02:00.989 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:02:04.714 [info] {"source":"oban","duration":818,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:02:34.716 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:03:00.990 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:03:04.717 [info] {"source":"oban","duration":643,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:03:34.718 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:04:00.991 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:04:04.719 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:04:34.721 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:05:00.992 [info] {"source":"oban","duration":160,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:05:04.723 [info] {"source":"oban","duration":632,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:05:34.724 [info] {"source":"oban","duration":945,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:06:00.993 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:06:04.726 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:06:34.728 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:07:00.994 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:07:04.729 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:07:34.730 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:08:00.995 [info] {"source":"oban","duration":163,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:08:04.731 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:08:34.739 [info] {"source":"oban","duration":7734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:09:00.996 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:09:04.740 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:09:34.742 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:10:00.997 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:10:04.743 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:10:34.744 [info] {"source":"oban","duration":674,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:11:00.998 [info] {"source":"oban","duration":236,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:11:04.745 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:11:34.747 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:12:00.999 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:12:04.748 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:12:34.750 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:13:01.000 [info] {"source":"oban","duration":166,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:13:04.752 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:13:34.753 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:14:00.001 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:14:04.755 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:14:34.757 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:15:00.002 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:15:04.758 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:15:34.759 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:16:00.003 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:16:04.760 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:16:34.761 [info] {"source":"oban","duration":616,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:17:00.004 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:17:04.762 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:17:34.763 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:18:00.005 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:18:04.764 [info] {"source":"oban","duration":628,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:18:34.765 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:19:00.006 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:19:04.767 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:19:34.769 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:20:00.007 [info] {"source":"oban","duration":268,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:20:04.770 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:20:34.772 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:21:00.008 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:21:04.774 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:21:34.776 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:22:00.009 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:22:04.778 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:22:34.780 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:23:00.010 [info] {"source":"oban","duration":260,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:23:04.781 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:23:34.783 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:24:00.011 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:24:04.785 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:24:34.786 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:25:00.012 [info] {"source":"oban","duration":166,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:25:04.787 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:25:34.789 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:26:00.013 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:26:04.791 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:26:20.816 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792214780816713511,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:26:20.817 [debug] QUERY OK source="media_items" db=0.1ms idle=611.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" = ?) [13649] 05:26:20.817 [info] User scripts lifecyle file either not present or is empty. Skipping. 05:26:20.817 [debug] QUERY OK source="sources" db=0.2ms idle=611.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 05:26:20.818 [debug] QUERY OK source="media_profiles" db=0.1ms idle=611.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] 05:26:20.818 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [13649] 05:26:20.819 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.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" = ?) [13649] 05:26:20.819 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 05:26:20.819 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:26:20.819 [debug] QUERY OK source="settings" db=0.0ms 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 [] 05:26:20.819 [debug] Running yt-dlp command for action: get_downloadable_status 05:26:20.856 [debug] QUERY OK source="settings" db=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 [] 05:26:20.856 [debug] QUERY OK source="settings" db=0.0ms 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 [] 05:26:20.856 [debug] QUERY OK source="settings" db=0.0ms 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 [] 05:26:20.856 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/50/2d/502d95e77d4ce54c31785d717e2682676feac46e6e2f7bcf6a966d47f281c052.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 05:26:22.138 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/50/2d/502d95e77d4ce54c31785d717e2682676feac46e6e2f7bcf6a966d47f281c052.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 05:26:22.138 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 05:26:22.139 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1321786,"event":"job:exception","queue_time":407882,"attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:26:34.793 [info] {"source":"oban","duration":1120,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:27:00.014 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:27:03.860 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792214823860671991,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:27:03.861 [debug] QUERY OK source="media_items" db=0.2ms idle=1007.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" = ?) [37712] 05:27:03.861 [info] User scripts lifecyle file either not present or is empty. Skipping. 05:27:03.861 [debug] QUERY OK source="sources" db=0.1ms idle=655.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 05:27:03.861 [debug] QUERY OK source="media_profiles" db=0.1ms idle=655.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] 05:27:03.862 [debug] QUERY OK source="media_items" db=0.2ms idle=7.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [37712] 05:27:03.909 [debug] QUERY OK source="media_metadata" db=0.1ms idle=48.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [37712] 05:27:03.909 [debug] QUERY OK source="media_profiles" db=0.1ms idle=48.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] 05:27:03.910 [debug] QUERY OK source="settings" db=0.0ms idle=48.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:27:03.910 [debug] QUERY OK source="settings" db=0.0ms idle=48.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:27:03.910 [debug] Running yt-dlp command for action: get_downloadable_status 05:27:03.911 [debug] QUERY OK source="settings" db=0.0ms idle=48.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:27:03.911 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:27:03.911 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:27:03.911 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dd/1b/dd1b9633fa069e7498cd74e25cfc034a370ec4fe67a458988741af1ddb01b9c3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 05:27:04.795 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:27:05.723 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dd/1b/dd1b9633fa069e7498cd74e25cfc034a370ec4fe67a458988741af1ddb01b9c3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 05:27:05.723 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 05:27:05.723 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1862849,"event":"job:exception","queue_time":979071,"attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:27:34.796 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:27:56.916 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792214876916803931,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:27:56.917 [debug] QUERY OK source="media_items" db=0.2ms idle=1711.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" = ?) [5378] 05:27:56.917 [info] User scripts lifecyle file either not present or is empty. Skipping. 05:27:56.917 [debug] QUERY OK source="sources" db=0.0ms idle=1009.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 05:27:56.918 [debug] QUERY OK source="media_profiles" db=0.1ms idle=711.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] 05:27:56.918 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [5378] 05:27:56.968 [debug] QUERY OK source="media_metadata" db=0.1ms idle=51.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [5378] 05:27:56.969 [debug] QUERY OK source="media_profiles" db=0.1ms idle=51.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] 05:27:56.969 [debug] QUERY OK source="settings" db=0.2ms idle=51.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:27:56.969 [debug] QUERY OK source="settings" db=0.1ms idle=51.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:27:56.969 [debug] Running yt-dlp command for action: get_downloadable_status 05:27:56.970 [debug] QUERY OK source="settings" db=0.0ms 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 [] 05:27:56.970 [debug] QUERY OK source="settings" db=0.0ms 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 [] 05:27:56.970 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:27:56.970 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/91/8a/918a6d64537628491236c94c0bad96bb2dd9dda8b1591e98887a2e9bf85afa41.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 05:27:58.315 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/91/8a/918a6d64537628491236c94c0bad96bb2dd9dda8b1591e98887a2e9bf85afa41.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 05:27:58.315 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 05:27:58.315 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1398511,"event":"job:exception","queue_time":594677,"attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:28:00.015 [info] {"source":"oban","duration":280,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:28:04.798 [info] {"source":"oban","duration":1472,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:28:11.935 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792214891935797452,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:28:11.936 [debug] QUERY OK source="media_items" db=0.1ms idle=1730.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" = ?) [1922] 05:28:11.936 [info] User scripts lifecyle file either not present or is empty. Skipping. 05:28:11.936 [debug] QUERY OK source="sources" db=0.1ms idle=1730.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 05:28:11.936 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1009.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] 05:28:11.937 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [1922] 05:28:11.970 [debug] QUERY OK source="media_metadata" db=0.1ms idle=34.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" = ?) [1922] 05:28:11.970 [debug] QUERY OK source="media_profiles" db=0.0ms idle=34.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] 05:28:11.971 [debug] QUERY OK source="settings" db=0.0ms idle=34.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:28:11.971 [debug] QUERY OK source="settings" db=0.0ms idle=34.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:28:11.971 [debug] Running yt-dlp command for action: get_downloadable_status 05:28:12.005 [debug] QUERY OK source="settings" db=0.1ms idle=67.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:28:12.005 [debug] QUERY OK source="settings" db=0.0ms 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 [] 05:28:12.005 [debug] QUERY OK source="settings" db=0.0ms idle=34.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:28:12.005 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/43/3b/433bae515c884fdc2ea9f02b71e890ce8bc8f9d4bffe45203f459575e66d2218.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 05:28:13.883 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/43/3b/433bae515c884fdc2ea9f02b71e890ce8bc8f9d4bffe45203f459575e66d2218.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 05:28:13.884 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 05:28:13.884 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1948325,"event":"job:exception","queue_time":767805,"attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:28:34.799 [info] {"source":"oban","duration":1074,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:28:43.970 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792214923970754700,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:28:43.971 [debug] QUERY OK source="media_items" db=0.2ms idle=765.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" = ?) [13717] 05:28:43.971 [info] User scripts lifecyle file either not present or is empty. Skipping. 05:28:43.971 [debug] QUERY OK source="sources" db=0.1ms idle=765.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" = ?) [3] 05:28:43.972 [debug] QUERY OK source="media_profiles" db=0.1ms idle=765.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] 05:28:43.972 [debug] QUERY OK source="media_items" db=0.1ms idle=8.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13717] 05:28:43.972 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [13717] 05:28:43.972 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 05:28:43.973 [debug] QUERY OK source="settings" db=0.0ms 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 [] 05:28:43.973 [debug] QUERY OK source="settings" db=0.0ms 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 [] 05:28:43.973 [debug] Running yt-dlp command for action: get_downloadable_status 05:28:44.011 [debug] QUERY OK source="settings" db=0.1ms idle=39.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:28:44.012 [debug] QUERY OK source="settings" db=0.0ms idle=39.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:28:44.012 [debug] QUERY OK source="settings" db=0.0ms idle=39.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 05:28:44.012 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/de/07de1933f973a813c20bf1bbfe2dfa1bc443c133a907a318c2391188614736bc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 05:28:45.448 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/de/07de1933f973a813c20bf1bbfe2dfa1bc443c133a907a318c2391188614736bc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 05:28:45.448 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 05:28:45.449 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1477772,"event":"job:exception","queue_time":531710,"attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 05:29:00.016 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:29:04.802 [info] {"source":"oban","duration":1209,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:29:34.804 [info] {"source":"oban","duration":1204,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:30:00.017 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:30:04.806 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:30:34.807 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:31:00.018 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:31:04.810 [info] {"source":"oban","duration":1153,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:31:34.811 [info] {"source":"oban","duration":1026,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:32:00.019 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:32:04.813 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:32:34.815 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:33:00.020 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:33:04.817 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:33:34.818 [info] {"source":"oban","duration":813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:34:00.021 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:34:04.820 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:34:34.822 [info] {"source":"oban","duration":650,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:35:00.022 [info] {"source":"oban","duration":166,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:35:04.823 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:35:34.825 [info] {"source":"oban","duration":928,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:36:00.023 [info] {"source":"oban","duration":244,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:36:04.827 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:36:34.828 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:37:00.024 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:37:04.830 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:37:34.832 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:38:00.025 [info] {"source":"oban","duration":164,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:38:04.834 [info] {"source":"oban","duration":649,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:38:34.835 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:39:00.026 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:39:04.838 [info] {"source":"oban","duration":1091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:39:34.839 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:40:00.027 [info] {"source":"oban","duration":159,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:40:04.840 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:40:34.842 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:41:00.028 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:41:04.844 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:41:34.845 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:42:00.029 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:42:04.846 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:42:34.848 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:43:00.030 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:43:04.849 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:43:34.850 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:44:00.031 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:44:04.852 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:44:34.853 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:45:00.032 [info] {"source":"oban","duration":313,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:45:04.855 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:45:34.856 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:46:00.033 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:46:04.858 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:46:34.860 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:47:00.034 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:47:04.862 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:47:34.863 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:48:00.035 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:48:04.865 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:48:34.866 [info] {"source":"oban","duration":670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:49:00.036 [info] {"source":"oban","duration":424,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:49:04.867 [info] {"source":"oban","duration":616,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:49:34.868 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:50:00.037 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:50:04.870 [info] {"source":"oban","duration":992,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:50:34.873 [info] {"source":"oban","duration":1119,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:51:00.038 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:51:04.874 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:51:34.875 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:52:00.039 [info] {"source":"oban","duration":258,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:52:04.877 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:52:34.878 [info] {"source":"oban","duration":622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:53:00.040 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:53:04.879 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:53:34.880 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:54:00.041 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:54:04.882 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:54:34.885 [info] {"source":"oban","duration":1076,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:55:00.042 [info] {"source":"oban","duration":402,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:55:04.886 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:55:34.888 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:56:00.043 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:56:04.889 [info] {"source":"oban","duration":596,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:56:34.890 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:57:00.044 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:57:04.892 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:57:34.893 [info] {"source":"oban","duration":672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:58:00.045 [info] {"source":"oban","duration":172,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:58:04.894 [info] {"source":"oban","duration":943,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:58:34.896 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:59:00.046 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 05:59:04.897 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:59:34.898 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:00:00.047 [info] {"source":"oban","duration":334,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:00:04.900 [info] {"source":"oban","duration":613,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:00:34.901 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:01:00.048 [info] {"source":"oban","duration":245,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:01:04.902 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:01:34.904 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:02:00.049 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:02:04.906 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:02:34.908 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:03:00.050 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:03:04.910 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:03:34.911 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:04:00.051 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:04:04.913 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:04:34.914 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:05:00.052 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:05:04.915 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:05:34.916 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:06:00.053 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:06:04.917 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:06:34.918 [info] {"source":"oban","duration":818,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:07:00.054 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:07:04.920 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:07:34.922 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:08:00.055 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:08:04.924 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:08:34.926 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:09:00.056 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:09:04.928 [info] {"source":"oban","duration":623,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:09:34.929 [info] {"source":"oban","duration":852,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:10:00.057 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:10:04.931 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:10:34.933 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:11:00.058 [info] {"source":"oban","duration":272,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:11:04.934 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:11:34.935 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:12:00.059 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:12:04.936 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:12:34.938 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:13:00.060 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:13:04.940 [info] {"source":"oban","duration":648,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:13:34.941 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:14:00.061 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:14:04.942 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:14:34.943 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:15:00.062 [info] {"source":"oban","duration":268,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:15:04.944 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:15:34.946 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:16:00.063 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:16:04.948 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:16:34.949 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:17:00.064 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:17:04.951 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:17:34.952 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:18:00.065 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:18:04.953 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:18:34.955 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:19:00.066 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:19:04.956 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:19:34.958 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:20:00.067 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:20:04.960 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:20:34.961 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:21:00.068 [info] {"source":"oban","duration":176,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:21:04.963 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:21:34.964 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:22:00.069 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:22:04.966 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:22:34.968 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:23:00.070 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:23:04.970 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:23:34.971 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:24:00.071 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:24:04.972 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:24:34.973 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:25:00.072 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:25:04.975 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:25:34.977 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:26:00.073 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:26:04.978 [info] {"source":"oban","duration":950,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:26:34.980 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:27:00.074 [info] {"source":"oban","duration":266,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:27:04.982 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:27:34.984 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:28:00.075 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:28:04.985 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:28:34.987 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:29:00.076 [info] {"source":"oban","duration":165,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:29:04.989 [info] {"source":"oban","duration":911,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:29:34.991 [info] {"source":"oban","duration":415,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:30:00.077 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:30:04.992 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:30:34.994 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:31:00.078 [info] {"source":"oban","duration":163,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:31:04.995 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:31:34.997 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:32:00.079 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:32:04.998 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:32:35.000 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:33:00.080 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:33:05.001 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:33:35.002 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:34:00.081 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:34:05.004 [info] {"source":"oban","duration":992,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:34:35.006 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:35:00.082 [info] {"source":"oban","duration":161,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:35:05.007 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:35:35.009 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:36:00.083 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:36:05.010 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:36:35.012 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:37:00.084 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:37:05.014 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:37:35.016 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:38:00.085 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:38:05.017 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:38:35.018 [info] {"source":"oban","duration":670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:39:00.086 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:39:05.019 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:39:35.021 [info] {"source":"oban","duration":1036,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:40:00.087 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:40:05.023 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:40:35.024 [info] {"source":"oban","duration":648,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:41:00.088 [info] {"source":"oban","duration":272,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:41:05.025 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:41:35.026 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:42:00.089 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:42:05.028 [info] {"source":"oban","duration":974,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:42:35.030 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:43:00.090 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:43:05.031 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:43:35.032 [info] {"source":"oban","duration":623,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:44:00.091 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:44:05.033 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:44:35.034 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:45:00.092 [info] {"source":"oban","duration":263,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:45:05.036 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:45:35.038 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:46:00.093 [info] {"source":"oban","duration":167,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:46:05.040 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:46:35.041 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:47:00.094 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:47:05.043 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:47:35.045 [info] {"source":"oban","duration":1364,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:48:00.095 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:48:05.046 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:48:35.048 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:49:00.096 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:49:05.050 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:49:35.051 [info] {"source":"oban","duration":851,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:50:00.097 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:50:05.053 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:50:35.054 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:51:00.098 [info] {"source":"oban","duration":256,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:51:05.056 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:51:35.058 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:52:00.099 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:52:05.059 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:52:35.061 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:53:00.100 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:53:05.063 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:53:35.065 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:54:00.100 [info] {"source":"oban","duration":104,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:54:05.067 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:54:35.069 [info] {"source":"oban","duration":1148,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:55:00.102 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:55:05.070 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:55:35.072 [info] {"source":"oban","duration":648,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:56:00.103 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:56:05.073 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:56:35.075 [info] {"source":"oban","duration":888,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:57:00.104 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:57:05.077 [info] {"source":"oban","duration":943,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:57:35.079 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:58:00.105 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:58:05.081 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:58:35.082 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:59:00.106 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 06:59:05.084 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:59:35.085 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:00:00.107 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:00:05.087 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:00:35.089 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:01:00.108 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:01:05.091 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:01:35.092 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:02:00.109 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:02:05.094 [info] {"source":"oban","duration":813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:02:35.096 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:03:00.110 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:03:05.098 [info] {"source":"oban","duration":941,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:03:35.100 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:04:00.111 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:04:05.102 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:04:35.104 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:05:00.112 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:05:05.106 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:05:35.108 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:06:00.113 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:06:05.110 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:06:35.112 [info] {"source":"oban","duration":731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:07:00.114 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:07:05.113 [info] {"source":"oban","duration":1003,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:07:35.115 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:08:00.115 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:08:05.117 [info] {"source":"oban","duration":884,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:08:35.119 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:09:00.116 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:09:05.121 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:09:35.123 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:10:00.117 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:10:05.124 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:10:35.126 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:11:00.118 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:11:05.127 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:11:35.129 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:12:00.119 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:12:05.131 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:12:35.133 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:12:57.082 [info] GET /.env 07:12:57.083 [debug] QUERY OK source="settings" db=0.4ms idle=248.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:12:57.083 [debug] QUERY OK source="settings" db=0.1ms idle=241.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:12:57.083 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 07:12:57.084 [error] #PID<0.83276.0> running PinchflatWeb.Endpoint (connection #PID<0.83275.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.env ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.83275.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 50916}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "identity", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36", "x-forwarded-for" => "130.12.180.171", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "130.12.180.171" }, 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.moozuk.net", method: "GET", owner: #PID<0.83276.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "identity"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"}, {"x-forwarded-for", "130.12.180.171"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "130.12.180.171"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN8_qjrs7NqnsiUABQZC"} ], 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.83275.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 50916}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "identity", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36", "x-forwarded-for" => "130.12.180.171", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "130.12.180.171" }, 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 / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.83275.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 50916}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "identity", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36", "x-forwarded-for" => "130.12.180.171", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "130.12.180.171" }, 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.moozuk.net", method: "GET", owner: #PID<0.83276.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "identity"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"}, {"x-forwarded-for", "130.12.180.171"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "130.12.180.171"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"} (truncated) 07:13:00.120 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:13:05.135 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:13:35.137 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:14:00.121 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:14:05.138 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:14:35.140 [info] {"source":"oban","duration":1058,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:15:00.122 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:15:05.142 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:15:35.144 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:16:00.123 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:16:05.145 [info] {"source":"oban","duration":1013,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:16:35.147 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:17:00.124 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:17:05.149 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:17:35.150 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:18:00.125 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:18:05.152 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:18:35.153 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:19:00.126 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:19:05.154 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:19:35.156 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:20:00.127 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:20:05.158 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:20:29.166 [info] GET /media_profiles/1 07:20:29.166 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"delete_files" => "true", "id" => "1"} Pipelines: [:browser] 07:20:29.167 [debug] QUERY OK source="media_profiles" db=0.3ms idle=580.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] 07:20:29.167 [debug] QUERY OK source="sources" db=0.2ms idle=226.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."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 07:20:29.168 [debug] QUERY OK source="settings" db=0.2ms idle=227.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:20:29.168 [debug] QUERY OK source="settings" db=0.1ms idle=227.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:20:29.169 [debug] QUERY OK source="settings" db=0.1ms idle=227.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:20:29.170 [info] Sent 200 in 4ms 07:20:29.246 [info] GET /sources/81046e94-3507-40e8-82cd-83ea7b063308/feed.xml 07:20:29.246 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "81046e94-3507-40e8-82cd-83ea7b063308"} Pipelines: [:maybe_basic_auth] 07:20:29.247 [info] GET /sources/7/media/49048 07:20:29.247 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49048", "source_id" => "7"} Pipelines: [:browser] 07:20:29.247 [debug] QUERY OK source="media_items" db=0.4ms idle=79.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" = ?) [49048] 07:20:29.247 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms idle=79.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."uuid" = ?) ["81046e94-3507-40e8-82cd-83ea7b063308"] 07:20:29.248 [debug] QUERY OK source="sources" db=0.3ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 07:20:29.264 [debug] QUERY OK source="tasks" db=16.1ms queue=0.1ms idle=79.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49048] 07:20:29.265 [debug] QUERY OK source="oban_jobs" db=0.8ms idle=17.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16049, 16124] 07:20:29.268 [debug] QUERY OK source="settings" db=1.4ms 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 [] 07:20:29.269 [debug] QUERY OK source="settings" db=0.1ms idle=20.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:20:29.269 [debug] QUERY OK source="settings" db=0.0ms 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 [] 07:20:29.270 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:20:29.271 [info] Sent 200 in 24ms 07:20:29.330 [debug] QUERY OK source="media_items" db=81.6ms queue=0.2ms idle=79.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [7, 2000] 07:20:29.482 [debug] QUERY OK source="source_metadata" db=0.1ms queue=0.1ms idle=213.8ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [7] 07:20:29.483 [debug] QUERY OK source="media_metadata" db=0.2ms idle=213.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" = ?) [50510] 07:20:29.519 [info] Sent 200 in 272ms 07:20:35.159 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:21:00.128 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:21:05.160 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:21:35.161 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:22:00.129 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:22:05.163 [info] {"source":"oban","duration":966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:22:35.165 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:23:00.130 [info] {"source":"oban","duration":269,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:23:05.167 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:23:35.169 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:24:00.131 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:24:05.171 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:24:35.173 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:25:00.132 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:25:05.175 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:25:35.177 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:26:00.133 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:26:05.179 [info] {"source":"oban","duration":851,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:26:35.181 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:27:00.134 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:27:05.183 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:27:35.184 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:28:00.135 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:28:05.186 [info] {"source":"oban","duration":650,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:28:10.834 [info] GET / 07:28:10.834 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 07:28:10.834 [debug] QUERY OK source="settings" db=0.2ms idle=1893.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:28:10.835 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=1894.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 07:28:10.835 [debug] QUERY OK source="sources" db=0.0ms idle=1894.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 07:28:11.110 [debug] QUERY OK source="media_items" db=274.3ms idle=1682.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 07:28:11.121 [debug] QUERY OK source="media_items" db=10.9ms idle=955.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 07:28:11.122 [debug] QUERY OK source="settings" db=0.2ms idle=286.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:28:11.122 [debug] QUERY OK source="settings" db=0.1ms idle=286.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:28:11.122 [debug] QUERY OK source="settings" db=0.0ms idle=287.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:28:11.123 [debug] QUERY OK source="tasks" db=0.1ms idle=13.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"] 07:28:11.125 [debug] QUERY OK source="media_items" db=1.4ms idle=2.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)) [] 07:28:11.125 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 07:28:11.125 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?,?)) [6, 4, 7] 07:28:11.142 [debug] QUERY OK source="media_items" db=16.0ms idle=3.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"))) [] 07:28:11.144 [debug] QUERY OK source="media_items" db=0.9ms idle=19.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] 07:28:11.144 [debug] QUERY OK source="sources" db=0.1ms idle=19.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 07:28:11.145 [info] Sent 200 in 311ms 07:28:11.971 [info] GET / 07:28:11.971 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 07:28:11.972 [debug] QUERY OK source="settings" db=0.2ms idle=845.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:28:11.972 [debug] QUERY OK source="media_profiles" db=0.1ms idle=829.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 07:28:11.972 [debug] QUERY OK source="sources" db=0.1ms idle=828.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 07:28:11.984 [debug] QUERY OK source="media_items" db=11.6ms idle=828.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 07:28:11.987 [debug] QUERY OK source="media_items" db=2.8ms idle=828.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 07:28:11.987 [debug] QUERY OK source="settings" db=0.1ms idle=15.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:28:11.988 [debug] QUERY OK source="settings" db=0.0ms idle=15.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:28:11.988 [debug] QUERY OK source="settings" db=0.1ms idle=15.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:28:11.989 [debug] QUERY OK source="tasks" db=0.2ms idle=4.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"] 07:28:11.990 [debug] QUERY OK source="media_items" db=1.2ms idle=2.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)) [] 07:28:11.991 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=3.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 07:28:11.992 [debug] QUERY OK source="sources" db=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" IN (?,?,?)) [6, 4, 7] 07:28:11.995 [debug] QUERY OK source="media_items" db=2.2ms idle=4.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"))) [] 07:28:11.996 [debug] QUERY OK source="media_items" db=1.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 INNER JOIN "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] 07:28:11.997 [debug] QUERY OK source="sources" db=0.5ms idle=6.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 (?,?)) [7, 3] 07:28:11.998 [info] Sent 200 in 27ms 07:28:35.187 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:29:00.136 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:29:05.189 [info] {"source":"oban","duration":982,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:29:35.191 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:30:00.137 [info] {"source":"oban","duration":336,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:30:05.192 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:30:35.194 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:31:00.138 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:31:05.196 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:31:35.198 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:32:00.139 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:32:05.200 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:32:35.202 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:33:00.140 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:33:05.204 [info] {"source":"oban","duration":978,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:33:35.206 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:34:00.141 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:34:05.208 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:34:35.210 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:35:00.142 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:35:05.211 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:35:35.212 [info] {"source":"oban","duration":639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:36:00.143 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:36:05.213 [info] {"source":"oban","duration":624,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:36:35.214 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:37:00.144 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:37:05.216 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:37:35.217 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:38:00.145 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:38:05.218 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:38:35.220 [info] {"source":"oban","duration":635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:39:00.146 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:39:05.221 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:39:35.222 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:40:00.147 [info] {"source":"oban","duration":169,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:40:05.223 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:40:35.224 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:41:00.148 [info] {"source":"oban","duration":165,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:41:05.225 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:41:35.226 [info] {"source":"oban","duration":919,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:42:00.149 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:42:05.228 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:42:35.229 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:43:00.150 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:43:05.230 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:43:35.232 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:44:00.151 [info] {"source":"oban","duration":157,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:44:05.233 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:44:35.235 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:45:00.152 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:45:05.236 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:45:35.237 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:46:00.153 [info] {"source":"oban","duration":165,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:46:05.239 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:46:35.241 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:47:00.154 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:47:05.242 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:47:35.243 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:48:00.155 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:48:05.245 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:48:29.443 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792223309443716116,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:48:29.444 [debug] QUERY OK source="media_items" db=0.6ms idle=503.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" = ?) [5378] 07:48:29.444 [info] User scripts lifecyle file either not present or is empty. Skipping. 07:48:29.446 [debug] QUERY OK source="sources" db=1.1ms idle=504.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 07:48:29.447 [debug] QUERY OK source="media_profiles" db=1.3ms idle=505.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] 07:48:29.450 [debug] QUERY OK source="media_items" db=2.2ms 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 [5378] 07:48:29.451 [debug] QUERY OK source="media_metadata" db=0.1ms idle=7.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [5378] 07:48:29.451 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:48:29.452 [debug] QUERY OK source="settings" db=0.0ms 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 [] 07:48:29.452 [debug] QUERY OK source="settings" db=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:48:29.452 [debug] Running yt-dlp command for action: get_downloadable_status 07:48:29.501 [debug] QUERY OK source="settings" db=0.2ms idle=50.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:48:29.501 [debug] QUERY OK source="settings" db=0.0ms idle=49.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:48:29.501 [debug] QUERY OK source="settings" db=0.0ms idle=49.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:48:29.501 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/9d/b09d2cb49ec329e005aed5982db9b729dcc907d6fe9e77e2b57da8945dbdeff8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:48:30.897 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/9d/b09d2cb49ec329e005aed5982db9b729dcc907d6fe9e77e2b57da8945dbdeff8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 07:48:30.897 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 07:48:30.898 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1454143,"event":"job:exception","queue_time":127417,"attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:48:35.248 [info] {"source":"oban","duration":1425,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:48:37.640 [info] GET / 07:48:37.640 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 07:48:37.640 [debug] QUERY OK source="settings" db=0.1ms idle=1196.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:48:37.640 [debug] QUERY OK source="media_profiles" db=0.0ms idle=699.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 07:48:37.641 [debug] QUERY OK source="sources" db=0.0ms idle=700.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 07:48:37.649 [debug] QUERY OK source="media_items" db=8.2ms idle=700.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 07:48:37.652 [debug] QUERY OK source="media_items" db=2.5ms idle=203.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 07:48:37.652 [debug] QUERY OK source="settings" db=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 [] 07:48:37.652 [debug] QUERY OK source="settings" db=0.0ms 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 [] 07:48:37.653 [debug] QUERY OK source="settings" db=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 [] 07:48:37.654 [debug] QUERY OK source="tasks" db=0.3ms idle=4.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"] 07:48:37.656 [debug] QUERY OK source="media_items" db=1.3ms idle=2.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)) [] 07:48:37.656 [debug] QUERY OK source="media_items" db=0.2ms idle=3.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 07:48:37.656 [debug] QUERY OK source="sources" db=0.1ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 07:48:37.665 [debug] QUERY OK source="media_items" db=7.6ms idle=3.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"))) [] 07:48:37.666 [debug] QUERY OK source="media_items" db=1.0ms idle=10.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] 07:48:37.667 [debug] QUERY OK source="sources" db=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 (?,?)) [7, 3] 07:48:37.667 [info] Sent 200 in 27ms 07:49:00.156 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:49:05.249 [info] {"source":"oban","duration":1027,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:49:35.251 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:50:00.157 [info] {"source":"oban","duration":401,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:50:05.254 [info] {"source":"oban","duration":1384,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:50:35.255 [info] {"source":"oban","duration":981,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:51:00.158 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:51:05.257 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:51:35.259 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:52:00.159 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:52:05.261 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:52:35.262 [info] {"source":"oban","duration":780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:53:00.160 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:53:05.264 [info] {"source":"oban","duration":780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:53:35.266 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:53:36.762 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792223616762875998,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:53:36.763 [debug] QUERY OK source="media_items" db=0.1ms idle=1620.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" = ?) [37712] 07:53:36.763 [info] User scripts lifecyle file either not present or is empty. Skipping. 07:53:36.764 [debug] QUERY OK source="sources" db=0.9ms idle=1496.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 07:53:36.765 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1010.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] 07:53:36.766 [debug] QUERY OK source="media_items" db=0.4ms idle=9.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 [37712] 07:53:36.767 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [37712] 07:53:36.767 [debug] QUERY OK source="media_profiles" db=0.0ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:53:36.767 [debug] QUERY OK source="settings" db=0.0ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:53:36.767 [debug] QUERY OK source="settings" db=0.0ms 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 [] 07:53:36.768 [debug] Running yt-dlp command for action: get_downloadable_status 07:53:36.816 [debug] QUERY OK source="settings" db=0.1ms idle=49.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:53:36.816 [debug] QUERY OK source="settings" db=0.1ms idle=49.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:53:36.816 [debug] QUERY OK source="settings" db=0.1ms idle=49.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:53:36.817 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8a/49/8a4981497ffdcc23f294b725db93f5e051e1595f4337a182c4fb5f31aa2fcaba.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:53:38.978 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8a/49/8a4981497ffdcc23f294b725db93f5e051e1595f4337a182c4fb5f31aa2fcaba.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 07:53:38.978 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 07:53:38.979 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":2216069,"event":"job:exception","queue_time":38311,"attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:53:55.781 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792223635781697209,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:53:55.782 [debug] QUERY OK source="media_items" db=0.2ms idle=1638.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [1922] 07:53:55.782 [info] User scripts lifecyle file either not present or is empty. Skipping. 07:53:55.782 [debug] QUERY OK source="sources" db=0.1ms idle=1639.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" = ?) [3] 07:53:55.782 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1008.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] 07:53:55.783 [debug] QUERY OK source="media_items" db=0.1ms idle=7.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1922] 07:53:55.783 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [1922] 07:53:55.784 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:53:55.784 [debug] QUERY OK source="settings" db=0.0ms 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 [] 07:53:55.784 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:53:55.784 [debug] Running yt-dlp command for action: get_downloadable_status 07:53:55.784 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:53:55.785 [debug] QUERY OK source="settings" db=0.0ms 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 [] 07:53:55.785 [debug] QUERY OK source="settings" db=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 [] 07:53:55.785 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5b/64/5b6476662e0cedbe1e28d5a1f99b49451591fa1ad732e4376edb910c8e6f19e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:53:57.573 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5b/64/5b6476662e0cedbe1e28d5a1f99b49451591fa1ad732e4376edb910c8e6f19e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 07:53:57.574 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 07:53:57.574 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1792627,"event":"job:exception","queue_time":896644,"attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:54:00.161 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:54:05.269 [info] {"source":"oban","duration":1223,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:54:35.271 [info] {"source":"oban","duration":1085,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:54:47.836 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792223687836582502,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:54:47.837 [debug] QUERY OK source="media_items" db=0.1ms idle=693.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" = ?) [13649] 07:54:47.837 [info] User scripts lifecyle file either not present or is empty. Skipping. 07:54:47.837 [debug] QUERY OK source="sources" db=0.1ms idle=694.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 07:54:47.837 [debug] QUERY OK source="media_profiles" db=0.1ms idle=694.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] 07:54:47.838 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [13649] 07:54:47.838 [debug] QUERY OK source="media_metadata" db=0.0ms idle=1.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [13649] 07:54:47.838 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:54:47.842 [debug] QUERY OK source="settings" db=3.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 [] 07:54:47.842 [debug] QUERY OK source="settings" db=0.0ms 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 [] 07:54:47.842 [debug] Running yt-dlp command for action: get_downloadable_status 07:54:47.843 [debug] QUERY OK source="settings" db=0.0ms 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 [] 07:54:47.843 [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 [] 07:54:47.843 [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 [] 07:54:47.843 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5b/0c/5b0cd212c09ee5e3a172b47f295468cd5317be14ec21fb845889c23c53950fc2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:54:49.167 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5b/0c/5b0cd212c09ee5e3a172b47f295468cd5317be14ec21fb845889c23c53950fc2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 07:54:49.167 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 07:54:49.168 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1331167,"event":"job:exception","queue_time":697316,"attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:55:00.162 [info] {"source":"oban","duration":277,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:55:05.272 [info] {"source":"oban","duration":1085,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:55:35.275 [info] {"source":"oban","duration":1317,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:56:00.163 [info] {"source":"oban","duration":290,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:56:05.276 [info] {"source":"oban","duration":917,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:56:27.939 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792223787939613903,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:56:27.940 [debug] QUERY OK source="media_items" db=0.2ms idle=796.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" = ?) [13717] 07:56:27.940 [info] User scripts lifecyle file either not present or is empty. Skipping. 07:56:27.940 [debug] QUERY OK source="sources" db=0.2ms idle=797.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" = ?) [3] 07:56:27.941 [debug] QUERY OK source="media_profiles" db=0.1ms idle=797.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] 07:56:27.941 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [13717] 07:56:27.979 [debug] QUERY OK source="media_metadata" db=0.1ms idle=40.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" = ?) [13717] 07:56:27.980 [debug] QUERY OK source="media_profiles" db=0.1ms idle=39.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] 07:56:27.980 [debug] QUERY OK source="settings" db=0.0ms 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 [] 07:56:27.980 [debug] QUERY OK source="settings" db=0.1ms idle=39.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:56:27.981 [debug] Running yt-dlp command for action: get_downloadable_status 07:56:27.981 [debug] QUERY OK source="settings" db=0.0ms idle=40.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:56:27.981 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:56:27.982 [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 [] 07:56:27.982 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0c/4d/0c4d420224d465c938511092fd9d2fd9fe73db32628d90dde64d14309ed6c33c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:56:29.341 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0c/4d/0c4d420224d465c938511092fd9d2fd9fe73db32628d90dde64d14309ed6c33c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 07:56:29.341 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 07:56:29.342 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1402156,"event":"job:exception","queue_time":490204,"attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:56:35.278 [info] {"source":"oban","duration":1083,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:57:00.164 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:57:05.280 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:57:35.282 [info] {"source":"oban","duration":989,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:58:00.165 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:58:05.284 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:58:35.286 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:59:00.166 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 07:59:05.288 [info] {"source":"oban","duration":769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:59:35.290 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:00:00.167 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:00:05.292 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:00:35.293 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:01:00.168 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:01:05.294 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:01:35.295 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:02:00.169 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:02:05.298 [info] {"source":"oban","duration":1418,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:02:35.299 [info] {"source":"oban","duration":614,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:03:00.170 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:03:05.300 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:03:35.301 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:04:00.171 [info] {"source":"oban","duration":140,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:04:05.303 [info] {"source":"oban","duration":1248,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:04:35.304 [info] {"source":"oban","duration":657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:05:00.172 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:05:05.305 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:05:35.306 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:06:00.173 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:06:05.307 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:06:35.309 [info] {"source":"oban","duration":915,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:07:00.174 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:07:05.311 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:07:35.312 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:08:00.175 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:08:05.314 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:08:35.315 [info] {"source":"oban","duration":705,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:09:00.176 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:09:05.316 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:09:35.317 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:10:00.177 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:10:05.318 [info] {"source":"oban","duration":769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:10:35.320 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:11:00.178 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:11:05.322 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:11:35.323 [info] {"source":"oban","duration":986,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:12:00.179 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:12:05.325 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:12:35.327 [info] {"source":"oban","duration":640,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:13:00.180 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:13:05.328 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:13:35.329 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:14:00.181 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:14:05.330 [info] {"source":"oban","duration":657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:14:35.331 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:15:00.182 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:15:05.333 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:15:35.335 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:16:00.183 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:16:05.336 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:16:35.338 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:17:00.184 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:17:05.340 [info] {"source":"oban","duration":456,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:17:35.341 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:18:00.185 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:18:05.342 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:18:35.344 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:19:00.186 [info] {"source":"oban","duration":229,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:19:05.345 [info] {"source":"oban","duration":610,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:19:35.346 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:20:00.187 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:20:05.347 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:20:35.349 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:21:00.188 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:21:05.351 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:21:35.353 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:22:00.189 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:22:05.354 [info] {"source":"oban","duration":943,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:22:35.356 [info] {"source":"oban","duration":955,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:23:00.190 [info] {"source":"oban","duration":251,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:23:05.358 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:23:35.359 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:24:00.191 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:24:05.361 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:24:35.362 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:25:00.192 [info] {"source":"oban","duration":326,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:25:05.363 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:25:35.364 [info] {"source":"oban","duration":972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:26:00.193 [info] {"source":"oban","duration":299,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:26:05.366 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:26:35.367 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:27:00.194 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:27:05.369 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:27:35.371 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:28:00.195 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:28:05.372 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:28:35.374 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:29:00.196 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:29:05.375 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:29:35.377 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:30:00.197 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:30:05.378 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:30:35.379 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:31:00.198 [info] {"source":"oban","duration":229,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:31:05.380 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:31:35.382 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:32:00.199 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:32:05.384 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:32:35.386 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:33:00.200 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:33:05.387 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:33:35.389 [info] {"source":"oban","duration":618,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:34:00.201 [info] {"source":"oban","duration":169,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:34:05.390 [info] {"source":"oban","duration":635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:34:35.391 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:34:49.454 [info] {"args":{"id":49182},"id":16108,"meta":{},"system_time":1792226089453947788,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 08:34:49.454 [debug] QUERY OK source="media_items" db=0.4ms idle=1040.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" = ?) [49182] 08:34:49.455 [info] User scripts lifecyle file either not present or is empty. Skipping. 08:34:49.455 [debug] QUERY OK source="sources" db=0.1ms idle=1041.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:34:49.455 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1010.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] 08:34:49.456 [debug] QUERY OK source="media_items" db=0.2ms idle=9.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 [49182] 08:34:49.456 [debug] QUERY OK source="media_metadata" db=0.0ms idle=3.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" = ?) [49182] 08:34:49.457 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 08:34:49.457 [debug] QUERY OK source="settings" db=0.0ms 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 [] 08:34:49.457 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:34:49.457 [debug] Running yt-dlp command for action: get_downloadable_status 08:34:49.512 [debug] QUERY OK source="settings" db=0.1ms idle=55.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:34:49.512 [debug] QUERY OK source="settings" db=0.0ms idle=55.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:34:49.512 [debug] QUERY OK source="settings" db=0.1ms idle=55.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:34:49.512 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gdhre42GGbk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d8/8f/d88f26a9d2ca0ff3ce6fb1978d357c49d749ab991706e791637fee8fb257b173.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:34:52.528 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gdhre42GGbk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d8/8f/d88f26a9d2ca0ff3ce6fb1978d357c49d749ab991706e791637fee8fb257b173.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 08:34:52.528 [debug] Running yt-dlp command for action: download 08:34:52.529 [debug] QUERY OK source="settings" db=0.1ms idle=1115.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:34:52.529 [debug] QUERY OK source="settings" db=0.2ms idle=1115.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:34:52.529 [debug] QUERY OK source="settings" db=0.0ms idle=1115.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:34:52.530 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gdhre42GGbk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/어퍼컷Tube/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/어퍼컷Tube/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f2/4d/f24d9f01d20a7d3f43b0d5321ed753be1053ec92e9d02660a03a980575d22c88.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:35:00.202 [info] {"source":"oban","duration":288,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:35:05.393 [info] {"source":"oban","duration":1626,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:35:35.397 [info] {"source":"oban","duration":2754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:36:00.203 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:36:05.433 [info] {"source":"oban","duration":1369,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:36:35.437 [info] {"source":"oban","duration":3640,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:37:00.204 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:37:05.438 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:37:35.443 [info] {"source":"oban","duration":4187,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:38:00.205 [info] {"source":"oban","duration":171,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:38:05.444 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:38:15.819 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gdhre42GGbk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/어퍼컷Tube/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/어퍼컷Tube/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f2/4d/f24d9f01d20a7d3f43b0d5321ed753be1053ec92e9d02660a03a980575d22c88.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 08:38:16.236 [debug] Running yt-dlp command for action: download_thumbnail 08:38:16.384 [debug] QUERY OK source="settings" db=0.1ms idle=949.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:38:16.384 [debug] QUERY OK source="settings" db=0.0ms idle=950.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:38:16.384 [debug] QUERY OK source="settings" db=0.1ms idle=950.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:38:16.385 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gdhre42GGbk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/49182/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/92/f9/92f97c72f5e13344e0aec81d07a2569942d3f7663e472597bbbe111f66f330bc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:38:18.887 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gdhre42GGbk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/49182/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/92/f9/92f97c72f5e13344e0aec81d07a2569942d3f7663e472597bbbe111f66f330bc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 08:38:18.887 [debug] QUERY OK db=0.0ms idle=1453.6ms begin [] 08:38:18.889 [debug] QUERY OK source="media_items" db=1.3ms UPDATE "media_items" SET "media_filepath" = ?, "media_downloaded_at" = ?, "metadata_filepath" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/어퍼컷Tube/2026-10-17 단 "43 분",,, 진짜 미치도록 재밌습니다/단 "43 분",,, 진짜 미치도록 재밌습니다 [gdhre42GGbk].mp4", ~U[2026-10-17 08:38:15Z], "/downloads/어퍼컷Tube/2026-10-17 단 "43 분",,, 진짜 미치도록 재밌습니다/단 "43 분",,, 진짜 미치도록 재밌습니다 [gdhre42GGbk].info.json", "/downloads/어퍼컷Tube/2026-10-17 단 "43 분",,, 진짜 미치도록 재밌습니다/단 "43 분",,, 진짜 미치도록 재밌습니다 [gdhre42GGbk]-thumb.jpg", ~U[2026-10-17 08:38:18Z], 49182] 08:38:18.890 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/49182/metadata.json.gz", "/config/metadata/media_items/49182/thumbnail.jpg", 49182, ~U[2026-10-17 08:38:18Z], ~U[2026-10-17 08:38:18Z]] 08:38:18.929 [debug] QUERY OK db=39.4ms commit [] 08:38:19.015 [debug] QUERY OK source="media_items" db=85.7ms idle=1495.9ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-10-17 08:38:18Z], 49182] 08:38:19.031 [debug] QUERY OK source="media_items" db=15.6ms idle=1582.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [4376369025, ~U[2026-10-17 08:38:19Z], 49182] 08:38:19.032 [info] User scripts lifecyle file either not present or is empty. Skipping. 08:38:19.038 [info] {"args":{"id":49182},"id":16108,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":209578166,"event":"job:stop","queue_time":759525,"attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 08:38:35.449 [info] {"source":"oban","duration":3379,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:39:00.206 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:39:05.451 [info] {"source":"oban","duration":1220,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:39:35.453 [info] {"source":"oban","duration":1266,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:40:00.207 [info] {"source":"oban","duration":273,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:40:05.454 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:40:35.456 [info] {"source":"oban","duration":1251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:41:00.208 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:41:05.457 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:41:35.459 [info] {"source":"oban","duration":1151,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:42:00.209 [info] {"source":"oban","duration":173,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:42:05.460 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:42:35.462 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:43:00.210 [info] {"source":"oban","duration":166,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:43:05.464 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:43:35.465 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:44:00.211 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:44:05.467 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:44:35.468 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:45:00.212 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:45:05.469 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:45:35.471 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:46:00.213 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:46:05.473 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:46:35.475 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:47:00.214 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:47:05.476 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:47:35.477 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:48:00.215 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:48:05.479 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:48:35.480 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:49:00.216 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:49:05.481 [info] {"source":"oban","duration":934,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:49:35.483 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:50:00.217 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:50:05.485 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:50:35.486 [info] {"source":"oban","duration":518,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:51:00.218 [info] {"source":"oban","duration":1088,"event":"plugin:stop","jobs":[16334],"plugin":"Oban.Plugins.Cron"} 08:51:00.225 [info] {"args":{},"id":16334,"meta":{"cron":true,"cron_expr":"51 8 * * *","cron_tz":"Etc/UTC"},"system_time":1792227060225770471,"max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","event":"job:start","attempt":1,"tags":["local_data"]} 08:51:00.226 [info] Updating yt-dlp 08:51:00.226 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update 08:51:00.857 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update exited: 0 with: Latest version: stable@2026.08.19 from yt-dlp/yt-dlp yt-dlp is up to date (stable@2026.08.19 from yt-dlp/yt-dlp) 08:51:00.857 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version 08:51:01.256 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version exited: 0 with: 2026.08.19 08:51:01.257 [debug] QUERY OK source="settings" db=0.3ms idle=1810.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:51:01.257 [info] {"args":{},"id":16334,"meta":{"cron":true,"cron_expr":"51 8 * * *","cron_tz":"Etc/UTC"},"state":"success","max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","duration":1031616,"event":"job:stop","queue_time":224831,"attempt":1,"tags":["local_data"]} 08:51:05.487 [info] {"source":"oban","duration":1016,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:51:35.489 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:52:00.220 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:52:05.492 [info] {"source":"oban","duration":1411,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:52:35.494 [info] {"source":"oban","duration":1392,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:53:00.221 [info] {"source":"oban","duration":259,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:53:05.495 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:53:35.498 [info] {"source":"oban","duration":1326,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:54:00.222 [info] {"source":"oban","duration":244,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:54:05.499 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:54:35.501 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:55:00.223 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:55:05.503 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:55:35.504 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:56:00.224 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:56:05.506 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:56:35.507 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:57:00.225 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:57:05.509 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:57:35.511 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:58:00.226 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:58:05.512 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:58:35.514 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:59:00.227 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 08:59:05.516 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:59:35.518 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:00:00.228 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:00:05.519 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:00:35.520 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:01:00.229 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:01:05.521 [info] {"source":"oban","duration":939,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:01:35.523 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:02:00.230 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:02:05.525 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:02:35.527 [info] {"source":"oban","duration":1001,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:03:00.231 [info] {"source":"oban","duration":245,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:03:05.529 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:03:35.530 [info] {"source":"oban","duration":950,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:04:00.232 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:04:05.532 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:04:35.533 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:05:00.233 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:05:05.535 [info] {"source":"oban","duration":912,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:05:35.537 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:06:00.234 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:06:05.538 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:06:35.540 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:07:00.235 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:07:05.542 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:07:35.544 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:08:00.236 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:08:05.546 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:08:35.548 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:09:00.237 [info] {"source":"oban","duration":250,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:09:05.549 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:09:35.551 [info] {"source":"oban","duration":594,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:10:00.238 [info] {"source":"oban","duration":305,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:10:05.552 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:10:35.554 [info] {"source":"oban","duration":1085,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:11:00.239 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:11:05.556 [info] {"source":"oban","duration":1054,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:11:35.558 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:12:00.240 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:12:05.560 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:12:35.562 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:13:00.241 [info] {"source":"oban","duration":271,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:13:05.564 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:13:35.568 [info] {"source":"oban","duration":2782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:14:00.242 [info] {"source":"oban","duration":250,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:14:05.570 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:14:35.572 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:15:00.243 [info] {"source":"oban","duration":345,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:15:05.573 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:15:35.575 [info] {"source":"oban","duration":659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:16:00.244 [info] {"source":"oban","duration":280,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:16:05.576 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:16:35.578 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:17:00.245 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:17:05.580 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:17:35.581 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:18:00.246 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:18:05.583 [info] {"source":"oban","duration":940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:18:35.585 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:19:00.247 [info] {"source":"oban","duration":276,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:19:05.586 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:19:35.587 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:20:00.248 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:20:05.589 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:20:35.590 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:21:00.249 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:21:05.591 [info] {"source":"oban","duration":690,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:21:35.592 [info] {"source":"oban","duration":674,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:22:00.250 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:22:05.593 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:22:35.594 [info] {"source":"oban","duration":851,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:23:00.251 [info] {"source":"oban","duration":305,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:23:05.596 [info] {"source":"oban","duration":939,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:23:35.598 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:23:54.594 [info] GET / 09:23:54.594 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 09:23:54.595 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1148.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:23:54.595 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1148.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 09:23:54.596 [debug] QUERY OK source="sources" db=0.0ms idle=1148.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 09:23:54.624 [debug] QUERY OK source="media_items" db=27.7ms idle=1149.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:23:54.627 [debug] QUERY OK source="media_items" db=3.4ms idle=815.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:23:54.628 [debug] QUERY OK source="settings" db=0.1ms idle=32.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:23:54.628 [debug] QUERY OK source="settings" db=0.1ms idle=32.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:23:54.629 [debug] QUERY OK source="settings" db=0.1ms idle=32.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:23:54.629 [debug] QUERY OK source="tasks" db=0.1ms idle=5.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"] 09:23:54.631 [debug] QUERY OK source="media_items" db=1.3ms idle=2.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)) [] 09:23:54.631 [debug] QUERY OK source="media_items" db=0.2ms idle=3.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 09:23:54.632 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?,?)) [6, 4, 7] 09:23:54.642 [debug] QUERY OK source="media_items" db=9.0ms idle=3.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"))) [] 09:23:54.643 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=12.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] 09:23:54.643 [debug] QUERY OK source="sources" db=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 (?,?)) [7, 3] 09:23:54.644 [info] Sent 200 in 50ms 09:23:55.421 [info] GET / 09:23:55.421 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 09:23:55.421 [debug] QUERY OK source="settings" db=0.1ms idle=789.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:23:55.422 [debug] QUERY OK source="media_profiles" db=0.1ms idle=779.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 09:23:55.422 [debug] QUERY OK source="sources" db=0.0ms idle=778.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 09:23:55.430 [debug] QUERY OK source="media_items" db=8.0ms idle=778.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:23:55.432 [debug] QUERY OK source="media_items" db=2.2ms idle=620.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:23:55.433 [debug] QUERY OK source="settings" db=0.0ms 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 [] 09:23:55.433 [debug] QUERY OK source="settings" db=0.0ms 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 [] 09:23:55.433 [debug] QUERY OK source="settings" db=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 [] 09:23:55.434 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 09:23:55.435 [debug] QUERY OK source="media_items" db=0.9ms idle=1.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)) [] 09:23:55.436 [debug] QUERY OK source="media_items" db=0.5ms idle=2.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] 09:23:55.437 [debug] QUERY OK source="sources" db=0.1ms idle=3.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 (?,?,?)) [6, 4, 7] 09:23:55.439 [debug] QUERY OK source="media_items" db=2.0ms idle=3.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 09:23:55.440 [debug] QUERY OK source="media_items" db=0.9ms idle=5.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 09:23:55.441 [debug] QUERY OK source="sources" db=0.1ms idle=5.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 (?,?)) [7, 3] 09:23:55.442 [info] Sent 200 in 20ms 09:24:00.252 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:24:05.600 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:24:35.602 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:25:00.253 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:25:05.603 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:25:35.604 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:26:00.254 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:26:05.605 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:26:35.607 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:27:00.255 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:27:05.609 [info] {"source":"oban","duration":878,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:27:35.611 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:28:00.256 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:28:05.613 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:28:35.614 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:29:00.257 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:29:05.615 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:29:35.616 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:30:00.258 [info] {"source":"oban","duration":359,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:30:05.618 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:30:35.620 [info] {"source":"oban","duration":621,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:31:00.259 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:31:05.621 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:31:35.623 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:32:00.260 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:32:05.625 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:32:35.627 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:32:44.752 [info] GET / 09:32:44.752 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 09:32:44.752 [debug] QUERY OK source="settings" db=0.1ms idle=1305.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:32:44.753 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1306.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 09:32:44.753 [debug] QUERY OK source="sources" db=0.0ms idle=1306.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 09:32:44.755 [debug] QUERY OK source="media_items" db=2.5ms idle=1295.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:32:44.759 [debug] QUERY OK source="media_items" db=2.9ms idle=297.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:32:44.759 [debug] QUERY OK source="settings" db=0.1ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:32:44.759 [debug] QUERY OK source="settings" db=0.0ms 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 [] 09:32:44.760 [debug] QUERY OK source="settings" db=0.0ms 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 [] 09:32:44.760 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 09:32:44.762 [debug] QUERY OK source="media_items" db=1.2ms idle=1.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)) [] 09:32:44.762 [debug] QUERY OK source="media_items" db=0.2ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 09:32:44.762 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 09:32:44.772 [debug] QUERY OK source="media_items" db=8.9ms idle=3.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"))) [] 09:32:44.773 [debug] QUERY OK source="media_items" db=0.9ms idle=11.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] 09:32:44.774 [debug] QUERY OK source="sources" db=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 (?,?)) [7, 3] 09:32:44.775 [info] Sent 200 in 22ms 09:32:45.636 [info] GET / 09:32:45.636 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 09:32:45.636 [debug] QUERY OK source="settings" db=0.1ms idle=873.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:32:45.636 [debug] QUERY OK source="media_profiles" db=0.0ms idle=864.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 09:32:45.637 [debug] QUERY OK source="sources" db=0.1ms idle=863.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 09:32:45.648 [debug] QUERY OK source="media_items" db=11.3ms idle=863.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:32:45.652 [debug] QUERY OK source="media_items" db=3.1ms idle=189.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:32:45.652 [debug] QUERY OK source="settings" db=0.1ms idle=15.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:32:45.652 [debug] QUERY OK source="settings" db=0.1ms idle=15.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:32:45.653 [debug] QUERY OK source="settings" db=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 [] 09:32:45.653 [debug] QUERY OK source="tasks" db=0.1ms idle=5.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"] 09:32:45.655 [debug] QUERY OK source="media_items" db=1.0ms idle=2.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)) [] 09:32:45.655 [debug] QUERY OK source="media_items" db=0.3ms idle=2.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] 09:32:45.656 [debug] QUERY OK source="sources" db=0.1ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 09:32:45.658 [debug] QUERY OK source="media_items" db=2.1ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 09:32:45.659 [debug] QUERY OK source="media_items" db=0.9ms idle=5.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 09:32:45.660 [debug] QUERY OK source="sources" db=0.0ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 09:32:45.661 [info] Sent 200 in 25ms 09:33:00.261 [info] {"source":"oban","duration":383,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:33:05.628 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:33:35.629 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:34:00.262 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:34:05.631 [info] {"source":"oban","duration":888,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:34:35.633 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:35:00.263 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:35:05.635 [info] {"source":"oban","duration":634,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:35:35.636 [info] {"source":"oban","duration":424,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:36:00.264 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:36:05.637 [info] {"source":"oban","duration":620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:36:35.638 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:37:00.265 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:37:05.640 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:37:35.641 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:38:00.266 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:38:05.643 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:38:35.645 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:39:00.267 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:39:05.647 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:39:35.649 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:39:38.142 [info] {"args":{"id":32636},"id":16113,"meta":{},"system_time":1792229978142427940,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 09:39:38.143 [debug] QUERY OK source="media_items" db=0.8ms idle=695.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" = ?) [32636] 09:39:38.143 [info] User scripts lifecyle file either not present or is empty. Skipping. 09:39:38.144 [debug] QUERY OK source="sources" db=1.0ms idle=696.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] 09:39:38.146 [debug] QUERY OK source="media_profiles" db=1.3ms idle=697.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] 09:39:38.147 [debug] QUERY OK source="media_items" db=1.4ms idle=11.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [32636] 09:39:38.148 [debug] QUERY OK source="media_metadata" db=0.0ms idle=6.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" = ?) [32636] 09:39:38.148 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 09:39:38.149 [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 [] 09:39:38.149 [debug] QUERY OK source="settings" db=0.0ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:39:38.149 [debug] Running yt-dlp command for action: get_downloadable_status 09:39:38.149 [debug] QUERY OK source="settings" db=0.0ms 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 [] 09:39:38.150 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:39:38.150 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:39:38.150 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nJuN84BX3TU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b4/8e/b48ecc5282e2242d98e108c27d4586ba6806ca40b0297a0d9053122f207f9d8e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 09:39:40.455 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nJuN84BX3TU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b4/8e/b48ecc5282e2242d98e108c27d4586ba6806ca40b0297a0d9053122f207f9d8e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 09:39:40.455 [debug] Running yt-dlp command for action: download 09:39:40.455 [debug] QUERY OK source="settings" db=0.2ms idle=1008.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:39:40.456 [debug] QUERY OK source="settings" db=0.0ms idle=1008.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:39:40.456 [debug] QUERY OK source="settings" db=0.0ms idle=1009.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:39:40.456 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nJuN84BX3TU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/46/41/4641063b1841a4403c81da8ed5f539f485f1ca8cb05896b75a183764293f8443.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 09:39:47.074 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nJuN84BX3TU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/46/41/4641063b1841a4403c81da8ed5f539f485f1ca8cb05896b75a183764293f8443.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: unable to open for writing: [Errno 36] File name too long: '/downloads/이효석아카데미/2021-07-29 [투자 아카데미 19강] 장사 잘됩니까? - 활동성 지표(강사 : 김수헌 대표) #재무제표 #회전율 #활동성지표 #매출채권 #재고자산 #영업순환주기#주식공부 #경제공부/[투자 아카데미 19강] 장사 잘됩니까? - 활동성 지표(강사 : 김수헌 대표) #재무제표 #회전율 #활동성지표 #매출채권 #재고자산 #영업순환주기#주식공부 #경제공부 [nJuN84BX3TU].live_chat.json.part-Frag0.part' WARNING: Skipping embedding live_chat subtitle because the file is missing WARNING: Skipping embedding live_chat subtitle because the file is missing WARNING: Replacing existing file "/downloads/이효석아카데미/2021-07-29 [투자 아카데미 19강] 장사 잘됩니까? - 활동성 지표(강사 : 김수헌 대표) #재무제표 #회전율 #활동성지표 #매출채권 #재고자산 #영업순환주기#주식공부 #경제공부/[투자 아카데미 19강] 장사 잘됩니까? - 활동성 지표(강사 : 김수헌 대표) #재무제표 #회전율 #활동성지표 #매출채권 #재고자산 #영업순환주기#주식공부 #경제공부 [nJuN84BX3TU]-thumb.jpg" 09:39:47.075 [error] yt-dlp download error for media item #32636: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: unable to open for writing: [Errno 36] File name too long: '/downloads/이효석아카데미/2021-07-29 [투자 아카데미 19강] 장사 잘됩니까? - 활동성 지표(강사 : 김수헌 대표) #재무제표 #회전율 #활동성지표 #매출채권 #재고자산 #영업순환주기#주식공부 #경제공부/[투자 아카데미 19강] 장사 잘됩니까? - 활동성 지표(강사 : 김수헌 대표) #재무제표 #회전율 #활동성지표 #매출채권 #재고자산 #영업순환주기#주식공부 #경제공부 [nJuN84BX3TU].live_chat.json.part-Frag0.part'\nWARNING: Skipping embedding live_chat subtitle because the file is missing\nWARNING: Skipping embedding live_chat subtitle because the file is missing\nWARNING: Replacing existing file \"/downloads/이효석아카데미/2021-07-29 [투자 아카데미 19강] 장사 잘됩니까? - 활동성 지표(강사 : 김수헌 대표) #재무제표 #회전율 #활동성지표 #매출채권 #재고자산 #영업순환주기#주식공부 #경제공부/[투자 아카데미 19강] 장사 잘됩니까? - 활동성 지표(강사 : 김수헌 대표) #재무제표 #회전율 #활동성지표 #매출채권 #재고자산 #영업순환주기#주식공부 #경제공부 [nJuN84BX3TU]-thumb.jpg\"\n" 09:39:47.076 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":32636},"id":16113,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":8932998,"event":"job:exception","queue_time":225239,"attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 09:40:00.268 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:40:05.651 [info] {"source":"oban","duration":1207,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:40:35.653 [info] {"source":"oban","duration":1153,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:41:00.269 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:41:05.655 [info] {"source":"oban","duration":1142,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:41:35.656 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:42:00.270 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:42:05.658 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:42:35.659 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:43:00.271 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:43:05.660 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:43:35.662 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:44:00.272 [info] {"source":"oban","duration":245,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:44:05.664 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:44:35.665 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:45:00.273 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:45:05.667 [info] {"source":"oban","duration":587,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:45:35.668 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:46:00.274 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:46:05.670 [info] {"source":"oban","duration":1008,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:46:35.672 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:47:00.275 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:47:05.674 [info] {"source":"oban","duration":1160,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:47:35.675 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:48:00.276 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:48:05.677 [info] {"source":"oban","duration":521,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:48:35.678 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:49:00.277 [info] {"source":"oban","duration":161,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:49:05.680 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:49:35.682 [info] {"source":"oban","duration":1105,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:50:00.278 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:50:05.683 [info] {"source":"oban","duration":663,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:50:35.684 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:51:00.279 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:51:05.686 [info] {"source":"oban","duration":614,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:51:35.687 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:52:00.280 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:52:05.689 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:52:35.691 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:53:00.281 [info] {"source":"oban","duration":275,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:53:05.693 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:53:35.695 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:54:00.282 [info] {"source":"oban","duration":248,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:54:05.696 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:54:35.697 [info] {"source":"oban","duration":600,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:55:00.283 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:55:05.698 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:55:35.699 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:56:00.284 [info] {"source":"oban","duration":176,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:56:05.701 [info] {"source":"oban","duration":1023,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:56:35.703 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:57:00.285 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:57:05.705 [info] {"source":"oban","duration":649,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:57:35.706 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:58:00.286 [info] {"source":"oban","duration":296,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:58:05.708 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:58:35.710 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:59:00.287 [info] {"source":"oban","duration":307,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 09:59:05.711 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:59:35.712 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:00:00.288 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:00:05.713 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:00:35.714 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:01:00.289 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:01:05.715 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:01:35.717 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:02:00.290 [info] {"source":"oban","duration":244,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:02:05.719 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:02:35.721 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:03:00.291 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:03:05.723 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:03:35.725 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:04:00.292 [info] {"source":"oban","duration":173,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:04:05.726 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:04:35.727 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:05:00.293 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:05:05.728 [info] {"source":"oban","duration":659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:05:35.729 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:06:00.294 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:06:05.731 [info] {"source":"oban","duration":1003,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:06:35.733 [info] {"source":"oban","duration":900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:07:00.295 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:07:05.735 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:07:35.737 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:08:00.296 [info] {"source":"oban","duration":618,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:08:05.739 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:08:35.742 [info] {"source":"oban","duration":1284,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:09:00.298 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:09:05.743 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:09:35.745 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:10:00.299 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:10:05.747 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:10:35.748 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:11:00.300 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:11:05.749 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:11:35.751 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:12:00.301 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:12:05.753 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:12:35.755 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:13:00.302 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:13:05.759 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:13:35.760 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:14:00.303 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:14:05.762 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:14:35.763 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:15:00.304 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:15:05.765 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:15:35.766 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:16:00.305 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:16:05.768 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:16:35.770 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:17:00.306 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:17:05.771 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:17:35.773 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:18:00.307 [info] {"source":"oban","duration":265,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:18:05.775 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:18:35.777 [info] {"source":"oban","duration":976,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:19:00.308 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:19:05.779 [info] {"source":"oban","duration":975,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:19:35.781 [info] {"source":"oban","duration":638,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:20:00.309 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:20:05.782 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:20:07.918 [info] {"args":{"id":20118},"id":16104,"meta":{},"system_time":1792232407918164789,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 10:20:07.919 [debug] QUERY OK source="media_items" db=0.5ms idle=220.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" = ?) [20118] 10:20:07.919 [info] User scripts lifecyle file either not present or is empty. Skipping. 10:20:07.919 [debug] QUERY OK source="sources" db=0.1ms idle=221.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 10:20:07.920 [debug] QUERY OK source="media_profiles" db=0.2ms idle=221.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] 10:20:07.920 [debug] QUERY OK source="media_items" db=0.2ms idle=9.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [20118] 10:20:07.975 [debug] QUERY OK source="media_metadata" db=0.4ms idle=57.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" = ?) [20118] 10:20:07.976 [debug] QUERY OK source="media_profiles" db=0.2ms idle=56.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] 10:20:07.976 [debug] QUERY OK source="settings" db=0.1ms idle=56.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:20:07.976 [debug] QUERY OK source="settings" db=0.2ms idle=56.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:20:07.977 [debug] Running yt-dlp command for action: get_downloadable_status 10:20:07.977 [debug] QUERY OK source="settings" db=0.0ms 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 [] 10:20:07.977 [debug] QUERY OK source="settings" db=0.0ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:20:07.977 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:20:07.977 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ud4bftI7NEQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/b9/fcb949bb811f456aa8b37fb7ac00b5826284a023c92415cc862262a4a3f45e7e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:20:09.378 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ud4bftI7NEQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/b9/fcb949bb811f456aa8b37fb7ac00b5826284a023c92415cc862262a4a3f45e7e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] Ud4bftI7NEQ: This video is unavailable 10:20:09.379 [error] yt-dlp download error for media item #20118: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] Ud4bftI7NEQ: This video is unavailable\n" 10:20:09.379 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":20118},"id":16104,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1461193,"event":"job:exception","queue_time":756289,"attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 10:20:35.787 [info] {"source":"oban","duration":3605,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:21:00.310 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:21:05.789 [info] {"source":"oban","duration":1352,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:21:35.791 [info] {"source":"oban","duration":1198,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:22:00.311 [info] {"source":"oban","duration":281,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:22:05.793 [info] {"source":"oban","duration":1196,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:22:35.796 [info] {"source":"oban","duration":2169,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:23:00.312 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:23:05.797 [info] {"source":"oban","duration":884,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:23:35.800 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:24:00.313 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:24:05.801 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:24:35.802 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:25:00.314 [info] {"source":"oban","duration":279,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:25:05.804 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:25:35.805 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:26:00.315 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:26:05.806 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:26:35.807 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:27:00.316 [info] {"source":"oban","duration":571,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:27:05.808 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:27:35.809 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:28:00.317 [info] {"source":"oban","duration":313,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:28:05.811 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:28:35.812 [info] {"source":"oban","duration":620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:29:00.318 [info] {"source":"oban","duration":277,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:29:02.515 [info] {"args":{"id":32676},"id":16116,"meta":{},"system_time":1792232942515434393,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 10:29:02.516 [debug] QUERY OK source="media_items" db=0.5ms idle=817.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" = ?) [32676] 10:29:02.516 [info] User scripts lifecyle file either not present or is empty. Skipping. 10:29:02.516 [debug] QUERY OK source="sources" db=0.1ms idle=818.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] 10:29:02.516 [debug] QUERY OK source="media_profiles" db=0.1ms idle=818.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] 10:29:02.517 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [32676] 10:29:02.517 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.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" = ?) [32676] 10:29:02.518 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 10:29:02.518 [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 [] 10:29:02.518 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:29:02.519 [debug] Running yt-dlp command for action: get_downloadable_status 10:29:02.540 [debug] QUERY OK source="settings" db=0.1ms 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 [] 10:29:02.541 [debug] QUERY OK source="settings" db=0.1ms 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 [] 10:29:02.541 [debug] QUERY OK source="settings" db=0.1ms 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 [] 10:29:02.541 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t_WgzbnQWrs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e9/9e/e99e4cc3bff5d22401fc96de3a109c4c4aae634565d3dffc1f7cd7d1418506f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:29:04.907 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t_WgzbnQWrs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e9/9e/e99e4cc3bff5d22401fc96de3a109c4c4aae634565d3dffc1f7cd7d1418506f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 10:29:04.907 [debug] Running yt-dlp command for action: download 10:29:04.907 [debug] QUERY OK source="settings" db=0.1ms idle=1209.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:29:04.908 [debug] QUERY OK source="settings" db=0.1ms idle=1210.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:29:04.908 [debug] QUERY OK source="settings" db=0.1ms idle=1210.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:29:04.908 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t_WgzbnQWrs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bf/19/bf1957979d55eb035e45394ad780cbf93ef8e5b81ba5009417bfe67fdbaa077a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:29:05.817 [info] {"source":"oban","duration":4306,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:29:12.609 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t_WgzbnQWrs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bf/19/bf1957979d55eb035e45394ad780cbf93ef8e5b81ba5009417bfe67fdbaa077a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: unable to open for writing: [Errno 36] File name too long: '/downloads/이효석아카데미/2021-06-11 [투자 아카데미 7강] 손익계산서 뽀개기 - 매출원가율에 대하여 (강사 : 김수헌 대표) #회계 #손익계산서 #글로벌모니터 #주식 #돈 #투자 #금융 #주식공부 #경제공부/[투자 아카데미 7강] 손익계산서 뽀개기 - 매출원가율에 대하여 (강사 : 김수헌 대표) #회계 #손익계산서 #글로벌모니터 #주식 #돈 #투자 #금융 #주식공부 #경제공부 [t_WgzbnQWrs].live_chat.json.part-Frag0.part' WARNING: Skipping embedding live_chat subtitle because the file is missing WARNING: Skipping embedding live_chat subtitle because the file is missing WARNING: Replacing existing file "/downloads/이효석아카데미/2021-06-11 [투자 아카데미 7강] 손익계산서 뽀개기 - 매출원가율에 대하여 (강사 : 김수헌 대표) #회계 #손익계산서 #글로벌모니터 #주식 #돈 #투자 #금융 #주식공부 #경제공부/[투자 아카데미 7강] 손익계산서 뽀개기 - 매출원가율에 대하여 (강사 : 김수헌 대표) #회계 #손익계산서 #글로벌모니터 #주식 #돈 #투자 #금융 #주식공부 #경제공부 [t_WgzbnQWrs]-thumb.jpg" 10:29:12.609 [error] yt-dlp download error for media item #32676: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: unable to open for writing: [Errno 36] File name too long: '/downloads/이효석아카데미/2021-06-11 [투자 아카데미 7강] 손익계산서 뽀개기 - 매출원가율에 대하여 (강사 : 김수헌 대표) #회계 #손익계산서 #글로벌모니터 #주식 #돈 #투자 #금융 #주식공부 #경제공부/[투자 아카데미 7강] 손익계산서 뽀개기 - 매출원가율에 대하여 (강사 : 김수헌 대표) #회계 #손익계산서 #글로벌모니터 #주식 #돈 #투자 #금융 #주식공부 #경제공부 [t_WgzbnQWrs].live_chat.json.part-Frag0.part'\nWARNING: Skipping embedding live_chat subtitle because the file is missing\nWARNING: Skipping embedding live_chat subtitle because the file is missing\nWARNING: Replacing existing file \"/downloads/이효석아카데미/2021-06-11 [투자 아카데미 7강] 손익계산서 뽀개기 - 매출원가율에 대하여 (강사 : 김수헌 대표) #회계 #손익계산서 #글로벌모니터 #주식 #돈 #투자 #금융 #주식공부 #경제공부/[투자 아카데미 7강] 손익계산서 뽀개기 - 매출원가율에 대하여 (강사 : 김수헌 대표) #회계 #손익계산서 #글로벌모니터 #주식 #돈 #투자 #금융 #주식공부 #경제공부 [t_WgzbnQWrs]-thumb.jpg\"\n" 10:29:12.610 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":32676},"id":16116,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10094477,"event":"job:exception","queue_time":554309,"attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 10:29:35.818 [info] {"source":"oban","duration":1039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:30:00.319 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:30:05.820 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:30:35.822 [info] {"source":"oban","duration":1301,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:31:00.320 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:31:05.823 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:31:35.825 [info] {"source":"oban","duration":1088,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:32:00.321 [info] {"source":"oban","duration":308,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:32:05.826 [info] {"source":"oban","duration":646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:32:34.517 [info] GET /sources/7/media/48219 10:32:34.517 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48219", "source_id" => "7"} Pipelines: [:browser] 10:32:34.518 [debug] QUERY OK source="media_items" db=0.5ms idle=819.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" = ?) [48219] 10:32:34.519 [debug] QUERY OK source="sources" db=0.2ms idle=820.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] 10:32:34.519 [debug] QUERY OK source="tasks" db=0.3ms idle=820.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48219] 10:32:34.519 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=821.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15908] 10:32:34.519 [debug] QUERY OK source="settings" db=0.1ms idle=778.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:32:34.520 [debug] QUERY OK source="settings" db=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 [] 10:32:34.520 [debug] QUERY OK source="settings" db=0.0ms 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 [] 10:32:34.521 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 10:32:34.522 [info] Sent 200 in 4ms 10:32:35.827 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:33:00.322 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:33:05.829 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:33:35.830 [info] {"source":"oban","duration":987,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:34:00.323 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:34:05.832 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:34:35.834 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:35:00.324 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:35:05.836 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:35:35.837 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:36:00.325 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:36:05.838 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:36:35.840 [info] {"source":"oban","duration":628,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:37:00.326 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:37:05.841 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:37:35.843 [info] {"source":"oban","duration":985,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:38:00.327 [info] {"source":"oban","duration":286,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:38:05.845 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:38:35.846 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:39:00.328 [info] {"source":"oban","duration":162,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:39:05.848 [info] {"source":"oban","duration":907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:39:35.850 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:40:00.329 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:40:05.852 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:40:35.854 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:41:00.330 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:41:05.856 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:41:35.858 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:42:00.331 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:42:05.859 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:42:35.861 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:43:00.332 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:43:05.863 [info] {"source":"oban","duration":1216,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:43:35.864 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:44:00.333 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:44:05.866 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:44:35.868 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:45:00.334 [info] {"source":"oban","duration":253,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:45:05.869 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:45:35.873 [info] {"source":"oban","duration":2318,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:46:00.335 [info] {"source":"oban","duration":251,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:46:05.874 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:46:35.875 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:47:00.336 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:47:05.876 [info] {"source":"oban","duration":981,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:47:35.878 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:48:00.337 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:48:05.879 [info] {"source":"oban","duration":820,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:48:35.881 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:49:00.338 [info] {"source":"oban","duration":151,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:49:05.883 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:49:35.884 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:50:00.339 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:50:05.886 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:50:35.887 [info] {"source":"oban","duration":1112,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:51:00.340 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:51:05.889 [info] {"source":"oban","duration":976,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:51:35.891 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:52:00.341 [info] {"source":"oban","duration":263,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:52:05.893 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:52:35.895 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:53:00.342 [info] {"source":"oban","duration":166,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:53:05.897 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:53:35.899 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:54:00.343 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:54:05.900 [info] {"source":"oban","duration":675,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:54:35.901 [info] {"source":"oban","duration":619,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:55:00.344 [info] {"source":"oban","duration":170,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:55:05.902 [info] {"source":"oban","duration":910,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:55:35.904 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:56:00.345 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:56:05.906 [info] {"source":"oban","duration":890,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:56:35.908 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:57:00.346 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:57:05.910 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:57:35.912 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:58:00.347 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:58:05.913 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:58:35.914 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:59:00.348 [info] {"source":"oban","duration":256,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 10:59:05.916 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:59:35.918 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:00:00.349 [info] {"source":"oban","duration":282,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:00:05.919 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:00:35.920 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:01:00.350 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:01:05.921 [info] {"source":"oban","duration":973,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:01:35.923 [info] {"source":"oban","duration":648,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:02:00.351 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:02:05.924 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:02:35.926 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:03:00.352 [info] {"source":"oban","duration":264,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:03:05.928 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:03:35.930 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:04:00.353 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:04:05.932 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:04:35.934 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:05:00.354 [info] {"source":"oban","duration":262,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:05:05.935 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:05:35.936 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:06:00.355 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:06:05.938 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:06:35.939 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:07:00.356 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:07:05.941 [info] {"source":"oban","duration":610,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:07:35.942 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:08:00.357 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:08:05.944 [info] {"source":"oban","duration":614,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:08:35.945 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:09:00.358 [info] {"source":"oban","duration":254,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:09:05.947 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:09:35.949 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:10:00.359 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:10:05.950 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:10:35.952 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:11:00.360 [info] {"source":"oban","duration":290,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:11:05.953 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:11:35.954 [info] {"source":"oban","duration":651,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:12:00.361 [info] {"source":"oban","duration":236,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:12:05.955 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:12:35.956 [info] {"source":"oban","duration":980,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:13:00.362 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:13:05.958 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:13:35.959 [info] {"source":"oban","duration":978,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:14:00.363 [info] {"source":"oban","duration":165,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:14:05.961 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:14:35.963 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:14:50.187 [info] GET / 11:14:50.187 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 11:14:50.188 [debug] QUERY OK source="settings" db=0.2ms idle=672.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:14:50.188 [debug] QUERY OK source="media_profiles" db=0.3ms idle=486.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 11:14:50.188 [debug] QUERY OK source="sources" db=0.0ms idle=486.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 11:14:50.232 [debug] QUERY OK source="media_items" db=43.9ms idle=486.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 11:14:50.237 [debug] QUERY OK source="media_items" db=4.1ms idle=531.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 11:14:50.237 [debug] QUERY OK source="settings" db=0.1ms idle=49.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:14:50.238 [debug] QUERY OK source="settings" db=0.0ms idle=49.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:14:50.238 [debug] QUERY OK source="settings" db=0.1ms idle=49.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:14:50.239 [debug] QUERY OK source="tasks" db=0.1ms idle=6.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"] 11:14:50.240 [debug] QUERY OK source="media_items" db=1.4ms idle=2.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)) [] 11:14:50.241 [debug] QUERY OK source="media_items" db=0.3ms idle=3.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 11:14:50.242 [debug] QUERY OK source="sources" db=0.2ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 11:14:50.252 [debug] QUERY OK source="media_items" db=9.7ms idle=4.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 11:14:50.254 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=13.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] 11:14:50.255 [debug] QUERY OK source="sources" db=0.4ms idle=13.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 (?,?)) [7, 3] 11:14:50.256 [info] Sent 200 in 69ms 11:14:51.314 [info] GET / 11:14:51.314 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 11:14:51.315 [debug] QUERY OK source="settings" db=0.2ms idle=1072.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:14:51.315 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1062.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 11:14:51.315 [debug] QUERY OK source="sources" db=0.0ms idle=1061.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 11:14:51.323 [debug] QUERY OK source="media_items" db=7.8ms idle=1060.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 11:14:51.325 [debug] QUERY OK source="media_items" db=1.9ms idle=807.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 11:14:51.326 [debug] QUERY OK source="settings" db=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 [] 11:14:51.326 [debug] QUERY OK source="settings" db=0.0ms 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 [] 11:14:51.326 [debug] QUERY OK source="settings" db=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 [] 11:14:51.327 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 11:14:51.328 [debug] QUERY OK source="media_items" db=0.9ms idle=1.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)) [] 11:14:51.329 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 11:14:51.329 [debug] QUERY OK source="sources" db=0.0ms 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" IN (?,?,?)) [6, 4, 7] 11:14:51.331 [debug] QUERY OK source="media_items" db=1.9ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 11:14:51.333 [debug] QUERY OK source="media_items" db=1.1ms idle=4.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 11:14:51.333 [debug] QUERY OK source="sources" db=0.1ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 11:14:51.334 [info] Sent 200 in 19ms 11:15:00.364 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:15:05.964 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:15:35.966 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:16:00.365 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:16:05.968 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:16:12.814 [info] GET /sources/7/media/49047 11:16:12.814 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49047", "source_id" => "7"} Pipelines: [:browser] 11:16:12.814 [debug] QUERY OK source="media_items" db=0.3ms idle=1112.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" = ?) [49047] 11:16:12.815 [debug] QUERY OK source="sources" db=0.1ms idle=1113.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 11:16:12.815 [debug] QUERY OK source="tasks" db=0.2ms idle=1113.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49047] 11:16:12.815 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1113.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16048, 16123] 11:16:12.816 [debug] QUERY OK source="settings" db=0.1ms idle=215.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:16:12.816 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:16:12.816 [debug] QUERY OK source="settings" db=0.0ms 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 [] 11:16:12.817 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 11:16:12.818 [info] Sent 200 in 4ms 11:16:35.969 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:17:00.366 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:17:05.970 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:17:35.971 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:18:00.367 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:18:05.973 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:18:35.975 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:19:00.368 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:19:05.977 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:19:33.818 [info] {"args":{"id":17718},"id":16099,"meta":{},"system_time":1792235973818032475,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:19:33.819 [debug] QUERY OK source="media_items" db=1.2ms idle=116.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" = ?) [17718] 11:19:33.819 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:19:33.821 [debug] QUERY OK source="sources" db=0.9ms idle=117.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 11:19:33.821 [debug] QUERY OK source="media_profiles" db=0.3ms idle=119.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] 11:19:33.822 [debug] QUERY OK source="media_items" db=1.2ms idle=10.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [17718] 11:19:33.823 [debug] QUERY OK source="media_metadata" db=0.0ms idle=5.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [17718] 11:19:33.823 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 11:19:33.824 [debug] QUERY OK source="settings" db=0.0ms 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 [] 11:19:33.824 [debug] QUERY OK source="settings" db=0.0ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:19:33.824 [debug] Running yt-dlp command for action: get_downloadable_status 11:19:33.824 [debug] QUERY OK source="settings" db=0.0ms 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 [] 11:19:33.824 [debug] QUERY OK source="settings" db=0.0ms 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 [] 11:19:33.825 [debug] QUERY OK source="settings" db=0.0ms 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 [] 11:19:33.825 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=rstcWWYGOD0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8b/aa/8baacc398552ee68b277bedcdb8a87f7b5f80efed01f1e398695089f8afc29a3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:19:35.259 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=rstcWWYGOD0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8b/aa/8baacc398552ee68b277bedcdb8a87f7b5f80efed01f1e398695089f8afc29a3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] rstcWWYGOD0: This video is unavailable 11:19:35.260 [error] yt-dlp download error for media item #17718: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] rstcWWYGOD0: This video is unavailable\n" 11:19:35.261 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":17718},"id":16099,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1442288,"event":"job:exception","queue_time":158619,"attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:19:35.980 [info] {"source":"oban","duration":2955,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:20:00.369 [info] {"source":"oban","duration":240,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:20:05.982 [info] {"source":"oban","duration":934,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:20:35.984 [info] {"source":"oban","duration":933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:21:00.370 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:21:05.987 [info] {"source":"oban","duration":1117,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:21:35.988 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:22:00.371 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:22:05.990 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:22:35.992 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:23:00.372 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:23:05.994 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:23:35.995 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:24:00.373 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:24:05.997 [info] {"source":"oban","duration":618,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:24:35.998 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:25:00.374 [info] {"source":"oban","duration":272,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:25:06.000 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:25:36.001 [info] {"source":"oban","duration":1004,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:26:00.375 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:26:06.003 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:26:36.005 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:27:00.376 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:27:06.006 [info] {"source":"oban","duration":938,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:27:36.008 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:28:00.377 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:28:06.010 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:28:36.011 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:29:00.378 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:29:06.012 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:29:36.014 [info] {"source":"oban","duration":690,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:30:00.379 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:30:06.015 [info] {"source":"oban","duration":672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:30:36.016 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:31:00.380 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:31:06.017 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:31:36.019 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:32:00.381 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:32:06.020 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:32:36.021 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:33:00.382 [info] {"source":"oban","duration":236,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:33:06.022 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:33:36.024 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:34:00.383 [info] {"source":"oban","duration":480,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:34:06.025 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:34:36.027 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:35:00.384 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:35:06.029 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:35:36.030 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:36:00.385 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:36:06.032 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:36:36.034 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:37:00.386 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:37:06.036 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:37:36.037 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:38:00.387 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:38:06.040 [info] {"source":"oban","duration":1161,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:38:36.041 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:39:00.388 [info] {"source":"oban","duration":473,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:39:06.043 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:39:36.045 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:40:00.389 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:40:06.046 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:40:36.047 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:41:00.390 [info] {"source":"oban","duration":261,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:41:06.048 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:41:36.050 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:42:00.391 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:42:06.051 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:42:36.052 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:43:00.392 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:43:06.054 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:43:36.056 [info] {"source":"oban","duration":663,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:44:00.393 [info] {"source":"oban","duration":164,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:44:06.057 [info] {"source":"oban","duration":611,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:44:36.058 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:45:00.394 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:45:06.060 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:45:36.061 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:46:00.395 [info] {"source":"oban","duration":167,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:46:06.063 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:46:36.064 [info] {"source":"oban","duration":820,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:47:00.396 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:47:06.066 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:47:36.068 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:48:00.397 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:48:06.070 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:48:36.072 [info] {"source":"oban","duration":932,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:49:00.398 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:49:06.074 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:49:36.075 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:50:00.399 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:50:06.077 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:50:36.079 [info] {"source":"oban","duration":780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:51:00.400 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:51:06.081 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:51:36.083 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:52:00.401 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:52:06.084 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:52:36.085 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:53:00.402 [info] {"source":"oban","duration":250,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:53:06.086 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:53:36.087 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:54:00.403 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:54:06.089 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:54:36.091 [info] {"source":"oban","duration":940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:55:00.404 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:55:06.093 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:55:36.095 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:56:00.405 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:56:06.097 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:56:36.098 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:57:00.406 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:57:06.100 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:57:36.102 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:58:00.407 [info] {"source":"oban","duration":167,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:58:06.103 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:58:36.105 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:59:00.408 [info] {"source":"oban","duration":270,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 11:59:06.107 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:59:36.109 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:00:00.409 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:00:06.111 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:00:36.113 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:01:00.410 [info] {"source":"oban","duration":331,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:01:06.114 [info] {"source":"oban","duration":769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:01:36.115 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:02:00.411 [info] {"source":"oban","duration":400,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:02:06.117 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:02:36.118 [info] {"source":"oban","duration":731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:03:00.412 [info] {"source":"oban","duration":257,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:03:06.120 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:03:36.122 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:04:00.413 [info] {"source":"oban","duration":286,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:04:06.124 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:04:36.125 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:05:00.414 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:05:06.127 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:05:36.129 [info] {"source":"oban","duration":649,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:05:36.676 [info] {"args":{"id":19833},"id":16103,"meta":{},"system_time":1792238736676765529,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:05:36.677 [debug] QUERY OK source="media_items" db=0.6ms idle=975.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" = ?) [19833] 12:05:36.677 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:05:36.678 [debug] QUERY OK source="sources" db=0.3ms idle=976.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 12:05:36.678 [debug] QUERY OK source="media_profiles" db=0.1ms idle=548.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:05:36.679 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [19833] 12:05:36.726 [debug] QUERY OK source="media_metadata" db=0.2ms idle=49.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" = ?) [19833] 12:05:36.726 [debug] QUERY OK source="media_profiles" db=0.2ms idle=48.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:05:36.727 [debug] QUERY OK source="settings" db=0.0ms idle=48.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:05:36.727 [debug] QUERY OK source="settings" db=0.0ms idle=48.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:05:36.727 [debug] Running yt-dlp command for action: get_downloadable_status 12:05:36.756 [debug] QUERY OK source="settings" db=0.1ms idle=77.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:05:36.756 [debug] QUERY OK source="settings" db=0.2ms idle=30.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:05:36.757 [debug] QUERY OK source="settings" db=0.0ms idle=30.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:05:36.757 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Q5mhVgMdktM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/15/e7/15e71bc7fe9c89317e7c863cf7dd4f94eeb4ff5e65f56eb9f1c4e4bedacc52bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:05:38.155 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Q5mhVgMdktM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/15/e7/15e71bc7fe9c89317e7c863cf7dd4f94eeb4ff5e65f56eb9f1c4e4bedacc52bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] Q5mhVgMdktM: This video is unavailable 12:05:38.155 [error] yt-dlp download error for media item #19833: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] Q5mhVgMdktM: This video is unavailable\n" 12:05:38.156 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":19833},"id":16103,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1479309,"event":"job:exception","queue_time":152200,"attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:06:00.415 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:06:06.133 [info] {"source":"oban","duration":3968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:06:36.136 [info] {"source":"oban","duration":1104,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:07:00.416 [info] {"source":"oban","duration":268,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:07:06.137 [info] {"source":"oban","duration":934,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:07:36.139 [info] {"source":"oban","duration":1096,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:08:00.417 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:08:06.141 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:08:36.144 [info] {"source":"oban","duration":1091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:09:00.418 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:09:06.145 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:09:36.146 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:10:00.419 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:10:06.148 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:10:36.150 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:11:00.420 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:11:06.152 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:11:36.153 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:12:00.421 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:12:06.155 [info] {"source":"oban","duration":640,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:12:36.156 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:13:00.422 [info] {"source":"oban","duration":261,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:13:06.158 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:13:36.159 [info] {"source":"oban","duration":617,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:14:00.423 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:14:06.160 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:14:36.162 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:15:00.424 [info] {"source":"oban","duration":172,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:15:06.164 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:15:36.166 [info] {"source":"oban","duration":647,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:16:00.425 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:16:06.167 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:16:36.169 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:17:00.426 [info] {"source":"oban","duration":257,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:17:06.171 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:17:36.172 [info] {"source":"oban","duration":965,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:18:00.427 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:18:06.174 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:18:36.175 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:19:00.428 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:19:06.177 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:19:36.178 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:20:00.429 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:20:06.180 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:20:36.182 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:21:00.430 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:21:06.183 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:21:36.184 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:22:00.431 [info] {"source":"oban","duration":257,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:22:06.186 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:22:36.188 [info] {"source":"oban","duration":598,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:23:00.432 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:23:06.189 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:23:36.191 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:24:00.433 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:24:06.193 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:24:36.196 [info] {"source":"oban","duration":1174,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:25:00.434 [info] {"source":"oban","duration":282,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:25:06.197 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:25:36.199 [info] {"source":"oban","duration":627,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:26:00.435 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:26:06.200 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:26:36.201 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:27:00.436 [info] {"source":"oban","duration":410,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:27:06.203 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:27:36.205 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:28:00.437 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:28:06.207 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:28:36.208 [info] {"source":"oban","duration":808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:29:00.438 [info] {"source":"oban","duration":252,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:29:06.210 [info] {"source":"oban","duration":954,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:29:36.212 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:30:00.439 [info] {"source":"oban","duration":667,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:30:06.213 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:30:36.215 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:31:00.441 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:31:06.217 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:31:36.219 [info] {"source":"oban","duration":731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:32:00.442 [info] {"source":"oban","duration":229,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:32:06.221 [info] {"source":"oban","duration":1177,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:32:36.223 [info] {"source":"oban","duration":1094,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:33:00.443 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:33:06.224 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:33:36.226 [info] {"source":"oban","duration":990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:34:00.444 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:34:06.228 [info] {"source":"oban","duration":659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:34:36.229 [info] {"source":"oban","duration":780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:35:00.445 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:35:06.231 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:35:36.233 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:36:00.446 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:36:06.234 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:36:36.236 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:36:41.611 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792240601611073941,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:36:41.611 [debug] QUERY OK source="media_items" db=0.5ms idle=1909.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" = ?) [13649] 12:36:41.612 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:36:41.612 [debug] QUERY OK source="sources" db=0.1ms idle=1910.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 12:36:41.612 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1009.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:36:41.613 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [13649] 12:36:41.667 [debug] QUERY OK source="media_metadata" db=0.2ms idle=55.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" = ?) [13649] 12:36:41.667 [debug] QUERY OK source="media_profiles" db=0.1ms idle=55.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:36:41.667 [debug] QUERY OK source="settings" db=0.1ms idle=55.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:36:41.668 [debug] QUERY OK source="settings" db=0.0ms idle=55.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:36:41.668 [debug] Running yt-dlp command for action: get_downloadable_status 12:36:41.668 [debug] QUERY OK source="settings" db=0.0ms idle=55.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:36:41.668 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:36:41.669 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:36:41.669 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b8/a0/b8a0341fdf79cd0015bf3e09f907aa7407014f5b44cd9d68fa79f5542b8a4c21.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:36:43.238 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b8/a0/b8a0341fdf79cd0015bf3e09f907aa7407014f5b44cd9d68fa79f5542b8a4c21.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 12:36:43.238 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 12:36:43.252 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1627833,"event":"job:exception","queue_time":442088,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:37:00.447 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:37:06.241 [info] {"source":"oban","duration":4170,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:37:36.243 [info] {"source":"oban","duration":1197,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:38:00.448 [info] {"source":"oban","duration":165,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:38:06.244 [info] {"source":"oban","duration":1053,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:38:36.246 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:39:00.449 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:39:06.247 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:39:36.250 [info] {"source":"oban","duration":1255,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:40:00.450 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:40:06.251 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:40:17.927 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792240817927712303,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:40:17.928 [debug] QUERY OK source="media_items" db=0.5ms idle=226.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [37712] 12:40:17.928 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:40:17.929 [debug] QUERY OK source="sources" db=0.3ms idle=226.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 12:40:17.929 [debug] QUERY OK source="media_profiles" db=0.1ms idle=227.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:40:17.930 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [37712] 12:40:18.166 [debug] QUERY OK source="media_metadata" db=0.2ms idle=238.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" = ?) [37712] 12:40:18.166 [debug] QUERY OK source="media_profiles" db=0.1ms idle=237.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:40:18.166 [debug] QUERY OK source="settings" db=0.1ms idle=237.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:40:18.167 [debug] QUERY OK source="settings" db=0.0ms idle=237.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:40:18.167 [debug] Running yt-dlp command for action: get_downloadable_status 12:40:18.168 [debug] QUERY OK source="settings" db=0.1ms 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 [] 12:40:18.168 [debug] QUERY OK source="settings" db=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 [] 12:40:18.168 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:40:18.168 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b3/00/b300d995b498ba6eaff5ff5c145bd961c1dec8c0854ded6c2bd023d9be05c590.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:40:19.903 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b3/00/b300d995b498ba6eaff5ff5c145bd961c1dec8c0854ded6c2bd023d9be05c590.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 12:40:19.903 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 12:40:19.904 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1975808,"event":"job:exception","queue_time":947806,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:40:36.253 [info] {"source":"oban","duration":1023,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:41:00.451 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:41:06.255 [info] {"source":"oban","duration":995,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:41:36.258 [info] {"source":"oban","duration":1166,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:42:00.452 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:42:01.035 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792240921035661836,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:42:01.036 [debug] QUERY OK source="media_items" db=0.3ms idle=1333.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" = ?) [1922] 12:42:01.036 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:42:01.036 [debug] QUERY OK source="sources" db=0.0ms idle=1009.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 12:42:01.036 [debug] QUERY OK source="media_profiles" db=0.1ms idle=584.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:42:01.037 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [1922] 12:42:01.320 [debug] QUERY OK source="media_metadata" db=0.2ms idle=284.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [1922] 12:42:01.321 [debug] QUERY OK source="media_profiles" db=0.1ms idle=284.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:42:01.321 [debug] QUERY OK source="settings" db=0.1ms idle=284.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:42:01.321 [debug] QUERY OK source="settings" db=0.0ms idle=284.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:42:01.321 [debug] Running yt-dlp command for action: get_downloadable_status 12:42:01.372 [debug] QUERY OK source="settings" db=0.1ms idle=334.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:42:01.372 [debug] QUERY OK source="settings" db=0.1ms idle=51.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:42:01.372 [debug] QUERY OK source="settings" db=0.1ms idle=51.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:42:01.373 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5d/8d/5d8d1b74765975d3637275d812090b5cdf7ee90d0f57c57689fbd5ee18e44a34.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:42:03.220 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5d/8d/5d8d1b74765975d3637275d812090b5cdf7ee90d0f57c57689fbd5ee18e44a34.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 12:42:03.221 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 12:42:03.221 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":2185546,"event":"job:exception","queue_time":460452,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:42:06.260 [info] {"source":"oban","duration":1205,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:42:36.262 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:43:00.453 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:43:06.264 [info] {"source":"oban","duration":1153,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:43:36.265 [info] {"source":"oban","duration":973,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:44:00.454 [info] {"source":"oban","duration":271,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:44:03.160 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792241043160602303,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:44:03.161 [debug] QUERY OK source="media_items" db=0.3ms idle=1458.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" = ?) [5378] 12:44:03.161 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:44:03.161 [debug] QUERY OK source="sources" db=0.1ms idle=1459.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 12:44:03.162 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1008.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:44:03.162 [debug] QUERY OK source="media_items" db=0.2ms idle=7.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 [5378] 12:44:03.210 [debug] QUERY OK source="media_metadata" db=0.1ms idle=50.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" = ?) [5378] 12:44:03.211 [debug] QUERY OK source="media_profiles" db=0.1ms idle=49.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:44:03.211 [debug] QUERY OK source="settings" db=0.0ms idle=49.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:44:03.211 [debug] QUERY OK source="settings" db=0.0ms idle=49.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:44:03.211 [debug] Running yt-dlp command for action: get_downloadable_status 12:44:03.212 [debug] QUERY OK source="settings" db=0.0ms idle=49.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:44:03.212 [debug] QUERY OK source="settings" db=0.0ms 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 [] 12:44:03.212 [debug] QUERY OK source="settings" db=0.0ms 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 [] 12:44:03.212 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/60/14/60144ca5fca14c95ff40879f750e56b357f115716bfae3caef62cbb14865eca4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:44:04.594 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/60/14/60144ca5fca14c95ff40879f750e56b357f115716bfae3caef62cbb14865eca4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 12:44:04.594 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 12:44:04.595 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1434220,"event":"job:exception","queue_time":261916,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:44:06.268 [info] {"source":"oban","duration":1185,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:44:36.269 [info] {"source":"oban","duration":1029,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:45:00.455 [info] {"source":"oban","duration":263,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:45:06.271 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:45:36.273 [info] {"source":"oban","duration":974,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:45:46.275 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792241146275238054,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:45:46.276 [debug] QUERY OK source="media_items" db=0.5ms idle=573.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" = ?) [13717] 12:45:46.276 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:45:46.276 [debug] QUERY OK source="sources" db=0.1ms idle=574.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 12:45:46.276 [debug] QUERY OK source="media_profiles" db=0.2ms idle=574.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:45:46.277 [debug] QUERY OK source="media_items" db=0.2ms idle=7.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13717] 12:45:46.278 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.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" = ?) [13717] 12:45:46.278 [debug] QUERY OK source="media_profiles" db=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] 12:45:46.278 [debug] QUERY OK source="settings" db=0.0ms 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 [] 12:45:46.278 [debug] QUERY OK source="settings" db=0.0ms 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 [] 12:45:46.279 [debug] Running yt-dlp command for action: get_downloadable_status 12:45:46.381 [debug] QUERY OK source="settings" db=0.1ms idle=103.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:45:46.381 [debug] QUERY OK source="settings" db=0.1ms idle=103.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:45:46.381 [debug] QUERY OK source="settings" db=0.0ms idle=103.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:45:46.381 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/28/3d28d6eba8ce408a298b8f2cb09ae7a45510d37f27291dbe6c67a021bd73e547.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:45:47.822 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/28/3d28d6eba8ce408a298b8f2cb09ae7a45510d37f27291dbe6c67a021bd73e547.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 12:45:47.822 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 12:45:47.823 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1547385,"event":"job:exception","queue_time":923998,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:46:00.456 [info] {"source":"oban","duration":334,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:46:06.276 [info] {"source":"oban","duration":1270,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:46:36.278 [info] {"source":"oban","duration":1133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:47:00.457 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:47:06.279 [info] {"source":"oban","duration":1091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:47:36.281 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:48:00.458 [info] {"source":"oban","duration":240,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:48:06.282 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:48:36.283 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:49:00.459 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:49:06.285 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:49:36.286 [info] {"source":"oban","duration":1128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:50:00.460 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:50:06.288 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:50:36.289 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:51:00.461 [info] {"source":"oban","duration":249,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:51:06.291 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:51:36.293 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:52:00.462 [info] {"source":"oban","duration":296,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:52:06.295 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:52:36.297 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:53:00.463 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:53:06.299 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:53:36.300 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:54:00.464 [info] {"source":"oban","duration":229,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:54:06.301 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:54:36.304 [info] {"source":"oban","duration":1231,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:55:00.465 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:55:06.305 [info] {"source":"oban","duration":1039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:55:36.307 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:56:00.466 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:56:06.308 [info] {"source":"oban","duration":1059,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:56:36.310 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:57:00.467 [info] {"source":"oban","duration":252,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:57:06.312 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:57:36.314 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:58:00.468 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:58:06.316 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:58:36.317 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:59:00.469 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 12:59:06.319 [info] {"source":"oban","duration":615,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:59:36.320 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:00:00.470 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:00:06.323 [info] {"source":"oban","duration":1133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:00:36.324 [info] {"source":"oban","duration":663,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:01:00.471 [info] {"source":"oban","duration":171,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:01:06.325 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:01:36.326 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:02:00.472 [info] {"source":"oban","duration":284,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:02:06.327 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:02:36.329 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:03:00.473 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:03:06.331 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:03:36.333 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:04:00.474 [info] {"source":"oban","duration":108,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:04:06.334 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:04:36.336 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:05:00.475 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:05:06.337 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:05:36.339 [info] {"source":"oban","duration":668,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:06:00.476 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:06:06.340 [info] {"source":"oban","duration":654,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:06:36.342 [info] {"source":"oban","duration":1122,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:07:00.477 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:07:06.343 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:07:36.345 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:08:00.478 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:08:06.346 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:08:36.347 [info] {"source":"oban","duration":956,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:09:00.479 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:09:06.349 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:09:36.350 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:10:00.480 [info] {"source":"oban","duration":171,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:10:06.352 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:10:36.355 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:11:00.481 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:11:06.358 [info] {"source":"oban","duration":2498,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:11:36.359 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:12:00.482 [info] {"source":"oban","duration":312,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:12:06.360 [info] {"source":"oban","duration":808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:12:36.362 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:13:00.483 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:13:06.364 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:13:36.366 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:14:00.484 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:14:06.367 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:14:36.368 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:15:00.485 [info] {"source":"oban","duration":245,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:15:06.370 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:15:36.372 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:00.486 [info] {"source":"oban","duration":297,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:16:06.373 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:36.374 [info] {"source":"oban","duration":981,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:50.340 [info] {"args":{"id":32639},"id":16114,"meta":{},"system_time":1792243010340254649,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:16:50.341 [debug] QUERY OK source="media_items" db=0.6ms idle=635.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" = ?) [32639] 13:16:50.341 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:16:50.342 [debug] QUERY OK source="sources" db=0.3ms idle=636.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:16:50.342 [debug] QUERY OK source="media_profiles" db=0.1ms idle=637.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:50.342 [debug] QUERY OK source="media_items" db=0.3ms idle=15.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 [32639] 13:16:50.344 [debug] QUERY OK source="media_metadata" db=0.5ms idle=3.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" = ?) [32639] 13:16:50.344 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:50.344 [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 [] 13:16:50.345 [debug] QUERY OK source="settings" db=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:50.345 [debug] Running yt-dlp command for action: get_downloadable_status 13:16:50.345 [debug] QUERY OK source="settings" db=0.0ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:50.346 [debug] QUERY OK source="settings" db=0.1ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:50.346 [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 [] 13:16:50.346 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SY2di__u86k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/51/a2/51a25a4fac0ffffeca96ce346a92cec72cac141f6988ac03e55b1b5f16252bf7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:16:55.686 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SY2di__u86k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/51/a2/51a25a4fac0ffffeca96ce346a92cec72cac141f6988ac03e55b1b5f16252bf7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 13:16:55.686 [debug] Running yt-dlp command for action: download 13:16:55.687 [debug] QUERY OK source="settings" db=0.2ms idle=1981.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:55.687 [debug] QUERY OK source="settings" db=0.0ms idle=1982.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:55.687 [debug] QUERY OK source="settings" db=0.1ms idle=1982.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:55.687 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SY2di__u86k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/16/3e/163e80998c8006b8b624a565c4fdc5077315d697e4a649ce52aa82a0e665be0c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:17:00.487 [info] {"source":"oban","duration":350,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:17:03.921 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SY2di__u86k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/16/3e/163e80998c8006b8b624a565c4fdc5077315d697e4a649ce52aa82a0e665be0c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: unable to open for writing: [Errno 36] File name too long: '/downloads/이효석아카데미/2021-07-27 [투자 아카데미 18강] 돈($)은 거짓말 하지 않아 - 현금흐름표(강사 : 김수헌 대표) #재무제표 #현금흐름표 #매출채권 #현금 #대우조선해양 #KMW #주식공부 #경제공부/[투자 아카데미 18강] 돈($)은 거짓말 하지 않아 - 현금흐름표(강사 : 김수헌 대표) #재무제표 #현금흐름표 #매출채권 #현금 #대우조선해양 #KMW #주식공부 #경제공부 [SY2di__u86k].live_chat.json.part-Frag0.part' WARNING: Skipping embedding live_chat subtitle because the file is missing WARNING: Skipping embedding live_chat subtitle because the file is missing WARNING: Replacing existing file "/downloads/이효석아카데미/2021-07-27 [투자 아카데미 18강] 돈($)은 거짓말 하지 않아 - 현금흐름표(강사 : 김수헌 대표) #재무제표 #현금흐름표 #매출채권 #현금 #대우조선해양 #KMW #주식공부 #경제공부/[투자 아카데미 18강] 돈($)은 거짓말 하지 않아 - 현금흐름표(강사 : 김수헌 대표) #재무제표 #현금흐름표 #매출채권 #현금 #대우조선해양 #KMW #주식공부 #경제공부 [SY2di__u86k]-thumb.jpg" 13:17:03.921 [error] yt-dlp download error for media item #32639: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: unable to open for writing: [Errno 36] File name too long: '/downloads/이효석아카데미/2021-07-27 [투자 아카데미 18강] 돈($)은 거짓말 하지 않아 - 현금흐름표(강사 : 김수헌 대표) #재무제표 #현금흐름표 #매출채권 #현금 #대우조선해양 #KMW #주식공부 #경제공부/[투자 아카데미 18강] 돈($)은 거짓말 하지 않아 - 현금흐름표(강사 : 김수헌 대표) #재무제표 #현금흐름표 #매출채권 #현금 #대우조선해양 #KMW #주식공부 #경제공부 [SY2di__u86k].live_chat.json.part-Frag0.part'\nWARNING: Skipping embedding live_chat subtitle because the file is missing\nWARNING: Skipping embedding live_chat subtitle because the file is missing\nWARNING: Replacing existing file \"/downloads/이효석아카데미/2021-07-27 [투자 아카데미 18강] 돈($)은 거짓말 하지 않아 - 현금흐름표(강사 : 김수헌 대표) #재무제표 #현금흐름표 #매출채권 #현금 #대우조선해양 #KMW #주식공부 #경제공부/[투자 아카데미 18강] 돈($)은 거짓말 하지 않아 - 현금흐름표(강사 : 김수헌 대표) #재무제표 #현금흐름표 #매출채권 #현금 #대우조선해양 #KMW #주식공부 #경제공부 [SY2di__u86k]-thumb.jpg\"\n" 13:17:03.922 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":32639},"id":16114,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":13581642,"event":"job:exception","queue_time":256075,"attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:17:06.379 [info] {"source":"oban","duration":3758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:17:36.381 [info] {"source":"oban","duration":979,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:18:00.488 [info] {"source":"oban","duration":172,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:18:06.384 [info] {"source":"oban","duration":1372,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:18:36.386 [info] {"source":"oban","duration":1160,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:19:00.489 [info] {"source":"oban","duration":271,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:19:06.387 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:19:36.389 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:20:00.490 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:20:06.392 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:20:36.393 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:21:00.491 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:21:06.395 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:21:36.396 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:22:00.492 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:22:06.398 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:22:36.400 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:23:00.493 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:23:06.402 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:23:36.404 [info] {"source":"oban","duration":900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:24:00.494 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:24:06.406 [info] {"source":"oban","duration":659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:24:36.407 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:25:00.495 [info] {"source":"oban","duration":252,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:25:06.408 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:25:36.410 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:26:00.496 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:26:06.411 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:26:36.412 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:27:00.497 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:27:06.414 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:27:36.416 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:28:00.498 [info] {"source":"oban","duration":261,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:28:06.418 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:28:36.420 [info] {"source":"oban","duration":612,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:29:00.499 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:29:06.421 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:29:36.422 [info] {"source":"oban","duration":674,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:30:00.500 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:30:06.423 [info] {"source":"oban","duration":1035,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:30:36.425 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:31:00.501 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:31:06.427 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:31:36.428 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:32:00.502 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:32:06.430 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:32:36.432 [info] {"source":"oban","duration":818,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:33:00.503 [info] {"source":"oban","duration":164,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:33:06.434 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:33:36.436 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:34:00.504 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:34:06.438 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:34:36.439 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:35:00.504 [info] {"source":"oban","duration":66,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:35:06.440 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:35:36.441 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:36:00.506 [info] {"source":"oban","duration":428,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:36:06.443 [info] {"source":"oban","duration":957,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:36:36.445 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:37:00.507 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:37:06.446 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:37:36.447 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:38:00.508 [info] {"source":"oban","duration":173,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:38:06.448 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:38:36.450 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:39:00.509 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:39:06.452 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:39:36.454 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:40:00.510 [info] {"source":"oban","duration":349,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:40:06.456 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:40:36.457 [info] {"source":"oban","duration":636,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:41:00.511 [info] {"source":"oban","duration":282,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:41:06.458 [info] {"source":"oban","duration":891,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:41:36.460 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:42:00.512 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:42:06.461 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:42:36.462 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:43:00.513 [info] {"source":"oban","duration":267,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:43:06.464 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:43:36.465 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:44:00.514 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:44:06.467 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:44:36.468 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:45:00.515 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:45:06.469 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:45:36.471 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:46:00.516 [info] {"source":"oban","duration":176,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:46:06.472 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:46:36.473 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:47:00.517 [info] {"source":"oban","duration":275,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:47:06.475 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:47:36.476 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:48:00.518 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:48:06.478 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:48:36.479 [info] {"source":"oban","duration":926,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:49:00.519 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:49:06.481 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:49:36.483 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:50:00.520 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:50:06.484 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:50:36.485 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:51:00.521 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:51:06.487 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:51:36.489 [info] {"source":"oban","duration":769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:52:00.522 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:52:06.491 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:52:13.760 [info] {"args":{"id":32645},"id":16115,"meta":{},"system_time":1792245133759984236,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:52:13.761 [debug] QUERY OK source="media_items" db=0.8ms 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 WHERE (m0."id" = ?) [32645] 13:52:13.761 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:52:13.761 [debug] QUERY OK source="sources" db=0.1ms idle=55.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:52:13.761 [debug] QUERY OK source="media_profiles" db=0.2ms idle=55.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:52:13.762 [debug] QUERY OK source="media_items" db=0.2ms idle=17.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 [32645] 13:52:13.763 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.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" = ?) [32645] 13:52:13.763 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:52:13.764 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:13.764 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:13.764 [debug] Running yt-dlp command for action: get_downloadable_status 13:52:13.790 [debug] QUERY OK source="settings" db=0.1ms idle=28.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:13.791 [debug] QUERY OK source="settings" db=0.1ms idle=27.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:13.791 [debug] QUERY OK source="settings" db=0.1ms 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 [] 13:52:13.791 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GVtHROcYsGQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5a/15/5a15f1ff5887b3d4368047db7da89ca249f3116269385ec9932a31b58c353693.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:52:16.272 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GVtHROcYsGQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5a/15/5a15f1ff5887b3d4368047db7da89ca249f3116269385ec9932a31b58c353693.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 13:52:16.273 [debug] Running yt-dlp command for action: download 13:52:16.273 [debug] QUERY OK source="settings" db=0.1ms idle=567.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:16.273 [debug] QUERY OK source="settings" db=0.1ms idle=567.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:16.274 [debug] QUERY OK source="settings" db=0.1ms idle=567.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:16.274 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GVtHROcYsGQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a0/ee/a0ee1a742278a7b058cf3b955fa06c88478fea8203065ca34abf361c7a4ef308.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:52:22.127 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GVtHROcYsGQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a0/ee/a0ee1a742278a7b058cf3b955fa06c88478fea8203065ca34abf361c7a4ef308.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: unable to open for writing: [Errno 36] File name too long: '/downloads/이효석아카데미/2021-07-20 [투자 아카데미 16강] 누가 내 이익에 손을? - 영업이익편 (강사 : 김수헌 대표) #재무제표 #매출채권 #글로벌모니터 #대손충당금 #돈 #투자 #주식공부 #경제공부/[투자 아카데미 16강] 누가 내 이익에 손을? - 영업이익편 (강사 : 김수헌 대표) #재무제표 #매출채권 #글로벌모니터 #대손충당금 #돈 #투자 #주식공부 #경제공부 [GVtHROcYsGQ].live_chat.json.part-Frag0.part' WARNING: Skipping embedding live_chat subtitle because the file is missing WARNING: Skipping embedding live_chat subtitle because the file is missing WARNING: Replacing existing file "/downloads/이효석아카데미/2021-07-20 [투자 아카데미 16강] 누가 내 이익에 손을? - 영업이익편 (강사 : 김수헌 대표) #재무제표 #매출채권 #글로벌모니터 #대손충당금 #돈 #투자 #주식공부 #경제공부/[투자 아카데미 16강] 누가 내 이익에 손을? - 영업이익편 (강사 : 김수헌 대표) #재무제표 #매출채권 #글로벌모니터 #대손충당금 #돈 #투자 #주식공부 #경제공부 [GVtHROcYsGQ]-thumb.jpg" 13:52:22.128 [error] yt-dlp download error for media item #32645: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: unable to open for writing: [Errno 36] File name too long: '/downloads/이효석아카데미/2021-07-20 [투자 아카데미 16강] 누가 내 이익에 손을? - 영업이익편 (강사 : 김수헌 대표) #재무제표 #매출채권 #글로벌모니터 #대손충당금 #돈 #투자 #주식공부 #경제공부/[투자 아카데미 16강] 누가 내 이익에 손을? - 영업이익편 (강사 : 김수헌 대표) #재무제표 #매출채권 #글로벌모니터 #대손충당금 #돈 #투자 #주식공부 #경제공부 [GVtHROcYsGQ].live_chat.json.part-Frag0.part'\nWARNING: Skipping embedding live_chat subtitle because the file is missing\nWARNING: Skipping embedding live_chat subtitle because the file is missing\nWARNING: Replacing existing file \"/downloads/이효석아카데미/2021-07-20 [투자 아카데미 16강] 누가 내 이익에 손을? - 영업이익편 (강사 : 김수헌 대표) #재무제표 #매출채권 #글로벌모니터 #대손충당금 #돈 #투자 #주식공부 #경제공부/[투자 아카데미 16강] 누가 내 이익에 손을? - 영업이익편 (강사 : 김수헌 대표) #재무제표 #매출채권 #글로벌모니터 #대손충당금 #돈 #투자 #주식공부 #경제공부 [GVtHROcYsGQ]-thumb.jpg\"\n" 13:52:22.128 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":32645},"id":16115,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":8368332,"event":"job:exception","queue_time":846739,"attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:52:36.497 [info] {"source":"oban","duration":4106,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:53:00.523 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:53:06.498 [info] {"source":"oban","duration":1009,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:53:36.500 [info] {"source":"oban","duration":960,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:54:00.524 [info] {"source":"oban","duration":414,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:54:06.503 [info] {"source":"oban","duration":1181,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:54:36.504 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:00.525 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:55:06.506 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:36.508 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:56:00.526 [info] {"source":"oban","duration":381,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:56:06.510 [info] {"source":"oban","duration":1278,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:56:36.511 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:00.527 [info] {"source":"oban","duration":269,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:57:06.514 [info] {"source":"oban","duration":1127,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:36.515 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:00.528 [info] {"source":"oban","duration":163,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:58:06.517 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:36.519 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:00.529 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 13:59:06.521 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:36.523 [info] {"source":"oban","duration":622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:00:00.530 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:00:06.524 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:00:36.526 [info] {"source":"oban","duration":911,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:01:00.531 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:01:06.528 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:01:36.530 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:00.532 [info] {"source":"oban","duration":394,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:02:06.532 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:36.533 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:00.533 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:03:06.535 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:36.536 [info] {"source":"oban","duration":966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:00.534 [info] {"source":"oban","duration":251,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:04:06.538 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:36.540 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:00.535 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:05:06.541 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:36.543 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:00.536 [info] {"source":"oban","duration":366,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:06:06.545 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:36.546 [info] {"source":"oban","duration":930,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:00.537 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:07:06.548 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:36.550 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:00.538 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:08:06.551 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:36.553 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:09:00.539 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:09:06.555 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:09:36.556 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:10:00.540 [info] {"source":"oban","duration":349,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:10:06.559 [info] {"source":"oban","duration":1055,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:10:18.955 [info] {"args":{"id":20851},"id":16105,"meta":{},"system_time":1792246218955644172,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:10:18.956 [debug] QUERY OK source="media_items" db=0.4ms idle=1250.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" = ?) [20851] 14:10:18.956 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:10:18.957 [debug] QUERY OK source="sources" db=0.1ms idle=1250.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 14:10:18.957 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1028.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:10:18.957 [debug] QUERY OK source="media_items" db=0.2ms idle=9.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 [20851] 14:10:18.958 [debug] QUERY OK source="media_metadata" db=0.2ms idle=3.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" = ?) [20851] 14:10:18.958 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:10:18.959 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.959 [debug] QUERY OK source="settings" db=0.3ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.960 [debug] Running yt-dlp command for action: get_downloadable_status 14:10:18.960 [debug] QUERY OK source="settings" db=0.0ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.960 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.960 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.961 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_O30pURPX9Q --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/96/d6/96d6ad52ca729ab008e8d0bd80c9f989555357177e4f002fb3debbb016b42fbe.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:20.584 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_O30pURPX9Q --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/96/d6/96d6ad52ca729ab008e8d0bd80c9f989555357177e4f002fb3debbb016b42fbe.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] _O30pURPX9Q: This video is unavailable 14:10:20.584 [error] yt-dlp download error for media item #20851: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] _O30pURPX9Q: This video is unavailable\n" 14:10:20.604 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":20851},"id":16105,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1629230,"event":"job:exception","queue_time":824322,"attempt":19,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:10:36.563 [info] {"source":"oban","duration":3672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:00.541 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:11:06.564 [info] {"source":"oban","duration":1039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:36.566 [info] {"source":"oban","duration":999,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:00.542 [info] {"source":"oban","duration":258,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:12:06.568 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:36.569 [info] {"source":"oban","duration":960,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:00.543 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:13:06.571 [info] {"source":"oban","duration":651,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:36.573 [info] {"source":"oban","duration":1113,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:14:00.544 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:14:06.574 [info] {"source":"oban","duration":961,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:14:36.576 [info] {"source":"oban","duration":818,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:15:00.545 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:15:06.578 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:15:36.579 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:00.546 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:16:06.580 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:36.582 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:00.547 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:17:06.583 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:36.584 [info] {"source":"oban","duration":672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:18:00.548 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:18:06.585 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:18:36.586 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:00.549 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:19:06.588 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:36.591 [info] {"source":"oban","duration":1337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:00.550 [info] {"source":"oban","duration":266,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:20:06.592 [info] {"source":"oban","duration":640,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:36.593 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:21:00.551 [info] {"source":"oban","duration":352,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:21:06.594 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:21:36.596 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:00.552 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:22:06.597 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:36.598 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:00.553 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:23:06.600 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:36.602 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:00.554 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:24:06.604 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:36.606 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:00.555 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:25:06.607 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:36.609 [info] {"source":"oban","duration":1098,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:00.556 [info] {"source":"oban","duration":271,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:26:06.611 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:36.613 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:27:00.557 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:27:06.614 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:27:36.616 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:00.558 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:28:06.618 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:36.619 [info] {"source":"oban","duration":639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:00.559 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:29:06.620 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:36.622 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:00.560 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:30:06.624 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:36.626 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:00.561 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:31:06.628 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:36.629 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:00.562 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:32:06.630 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:36.631 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:00.563 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:33:06.633 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:36.635 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:00.564 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:34:06.637 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:36.638 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:35:00.570 [info] {"source":"oban","duration":5296,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:35:06.640 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:35:36.642 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:00.571 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:36:06.644 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:36.645 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:37:00.572 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:37:06.647 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:37:36.648 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:00.573 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:38:06.649 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:36.651 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:00.574 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:39:06.653 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:36.655 [info] {"source":"oban","duration":1017,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:40:00.575 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:40:06.657 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:40:36.659 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:00.576 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:41:06.661 [info] {"source":"oban","duration":769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:36.662 [info] {"source":"oban","duration":911,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:00.577 [info] {"source":"oban","duration":283,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:42:06.664 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:36.667 [info] {"source":"oban","duration":1303,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:00.578 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:43:06.668 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:36.670 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:00.579 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:44:06.672 [info] {"source":"oban","duration":1019,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:36.674 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:45:00.580 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:45:06.675 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:45:36.677 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:00.581 [info] {"source":"oban","duration":244,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:46:06.679 [info] {"source":"oban","duration":852,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:36.681 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:00.582 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:47:06.683 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:36.685 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:00.583 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:48:06.687 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:36.689 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:00.584 [info] {"source":"oban","duration":284,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:49:06.691 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:36.692 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:00.585 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:50:06.694 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:36.696 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:00.585 [info] {"source":"oban","duration":83,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:51:06.698 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:36.699 [info] {"source":"oban","duration":813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:00.587 [info] {"source":"oban","duration":259,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:52:06.701 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:36.703 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:00.588 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:53:06.704 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:36.705 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:00.589 [info] {"source":"oban","duration":250,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:54:06.706 [info] {"source":"oban","duration":935,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:36.708 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:00.590 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:55:06.709 [info] {"source":"oban","duration":945,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:36.711 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:00.591 [info] {"source":"oban","duration":253,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:56:06.713 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:36.714 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:00.592 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:57:06.716 [info] {"source":"oban","duration":953,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:36.718 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:00.593 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:58:06.720 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:36.721 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:00.594 [info] {"source":"oban","duration":354,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 14:59:06.723 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:36.724 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:00:00.595 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:00:06.726 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:00:36.727 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:00.596 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:01:06.729 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:36.731 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:00.597 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:02:06.733 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:26.423 [info] GET / 15:02:26.423 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:02:26.423 [debug] QUERY OK source="settings" db=0.3ms idle=1713.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:26.424 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1714.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:02:26.424 [debug] QUERY OK source="sources" db=0.0ms idle=1714.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:02:26.460 [debug] QUERY OK source="media_items" db=36.1ms idle=1091.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:02:26.464 [debug] QUERY OK source="media_items" db=3.7ms idle=126.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:02:26.465 [debug] QUERY OK source="settings" db=0.2ms idle=41.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:26.465 [debug] QUERY OK source="settings" db=0.1ms idle=41.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:26.466 [debug] QUERY OK source="settings" db=0.1ms idle=41.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:26.466 [debug] QUERY OK source="tasks" db=0.2ms idle=5.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"] 15:02:26.469 [debug] QUERY OK source="media_items" db=2.3ms idle=2.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)) [] 15:02:26.470 [debug] QUERY OK source="media_items" db=0.5ms idle=4.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] 15:02:26.474 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 15:02:26.484 [debug] QUERY OK source="media_items" db=9.3ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:02:26.486 [debug] QUERY OK source="media_items" db=1.1ms idle=18.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] 15:02:26.486 [debug] QUERY OK source="sources" db=0.3ms 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 (?,?)) [7, 3] 15:02:26.488 [info] Sent 200 in 65ms 15:02:27.585 [info] GET / 15:02:27.585 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:02:27.586 [debug] QUERY OK source="settings" db=0.3ms idle=1111.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:27.586 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1101.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:02:27.586 [debug] QUERY OK source="sources" db=0.0ms idle=1100.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:02:27.594 [debug] QUERY OK source="media_items" db=7.8ms idle=1099.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:02:27.597 [debug] QUERY OK source="media_items" db=2.3ms idle=259.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:02:27.597 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:27.598 [debug] QUERY OK source="settings" db=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 [] 15:02:27.598 [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 [] 15:02:27.599 [debug] QUERY OK source="tasks" db=0.3ms idle=5.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"] 15:02:27.601 [debug] QUERY OK source="media_items" db=1.4ms idle=3.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)) [] 15:02:27.602 [debug] QUERY OK source="media_items" db=0.3ms 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 INNER JOIN "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] 15:02:27.602 [debug] QUERY OK source="sources" db=0.2ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 15:02:27.605 [debug] QUERY OK source="media_items" db=2.3ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:02:27.607 [debug] QUERY OK source="media_items" db=1.2ms idle=6.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 15:02:27.608 [debug] QUERY OK source="sources" db=0.2ms idle=6.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 (?,?)) [7, 3] 15:02:27.609 [info] Sent 200 in 23ms 15:02:36.735 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:00.598 [info] {"source":"oban","duration":258,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:03:06.737 [info] {"source":"oban","duration":907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:36.739 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:04:00.599 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:04:06.742 [info] {"source":"oban","duration":1252,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:04:36.743 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:00.600 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:05:06.745 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:36.747 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:06:00.601 [info] {"source":"oban","duration":158,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:06:06.748 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:06:36.749 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:07:00.602 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:07:06.751 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:07:36.752 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:08:00.603 [info] {"source":"oban","duration":240,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:08:06.754 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:08:36.756 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:09:00.604 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:09:06.757 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:09:36.759 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:10:00.605 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:10:06.761 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:10:36.763 [info] {"source":"oban","duration":731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:11:00.606 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:11:06.764 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:11:36.766 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:12:00.607 [info] {"source":"oban","duration":173,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:12:06.768 [info] {"source":"oban","duration":904,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:12:36.770 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:13:00.608 [info] {"source":"oban","duration":169,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:13:06.772 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:13:36.774 [info] {"source":"oban","duration":670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:14:00.609 [info] {"source":"oban","duration":255,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:14:06.775 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:14:36.776 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:15:00.610 [info] {"source":"oban","duration":221,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:15:06.778 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:15:36.779 [info] {"source":"oban","duration":1001,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:16:00.611 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:16:06.781 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:16:36.783 [info] {"source":"oban","duration":639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:17:00.612 [info] {"source":"oban","duration":286,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:17:06.784 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:17:36.785 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:18:00.613 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:18:06.787 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:18:36.789 [info] {"source":"oban","duration":851,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:19:00.614 [info] {"source":"oban","duration":258,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:19:06.791 [info] {"source":"oban","duration":851,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:19:36.793 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:20:00.615 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:20:06.795 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:20:36.796 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:21:00.616 [info] {"source":"oban","duration":752,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:21:06.798 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:21:36.800 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:22:00.618 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:22:06.801 [info] {"source":"oban","duration":1030,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:22:36.803 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:23:00.619 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:23:06.805 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:23:36.806 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:24:00.620 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:24:06.807 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:24:36.808 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:25:00.621 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:25:06.809 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:25:36.810 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:26:00.622 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:26:06.812 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:26:36.814 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:27:00.623 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:27:06.815 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:27:36.817 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:28:00.624 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:28:06.819 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:28:36.821 [info] {"source":"oban","duration":670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:29:00.625 [info] {"source":"oban","duration":278,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:29:06.822 [info] {"source":"oban","duration":908,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:29:36.824 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:30:00.626 [info] {"source":"oban","duration":385,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:30:06.826 [info] {"source":"oban","duration":919,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:30:36.828 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:31:00.627 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:31:06.829 [info] {"source":"oban","duration":1047,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:31:36.831 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:32:00.628 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:32:06.833 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:32:36.835 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:33:00.629 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:33:06.839 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:33:36.841 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:34:00.630 [info] {"source":"oban","duration":156,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:34:06.843 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:34:11.641 [info] {"args":{"id":10433,"quality_upgrade?":true},"id":16258,"meta":{},"system_time":1792251251641473583,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:34:11.643 [debug] QUERY OK source="media_items" db=1.5ms idle=929.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" = ?) [10433] 15:34:11.643 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:34:11.645 [debug] QUERY OK source="sources" db=1.2ms idle=931.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" = ?) [4] 15:34:11.694 [debug] QUERY OK source="media_metadata" db=0.5ms idle=981.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [10433] 15:34:11.695 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=102.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:34:11.695 [debug] QUERY OK source="settings" db=0.0ms idle=54.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:11.695 [debug] QUERY OK source="settings" db=0.0ms idle=52.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:11.695 [debug] Running yt-dlp command for action: get_downloadable_status 15:34:11.696 [debug] QUERY OK source="settings" db=0.0ms idle=51.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:11.696 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:11.696 [debug] QUERY OK source="settings" db=0.0ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:11.696 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kNxzXvBDQk8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/af/05/af057edd73d97b37380d61288494281f8c730ef8f1ac27bd7459aecd88d0eea8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:34:13.356 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kNxzXvBDQk8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/af/05/af057edd73d97b37380d61288494281f8c730ef8f1ac27bd7459aecd88d0eea8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] kNxzXvBDQk8: Private video 15:34:13.356 [error] yt-dlp download error for media item #10433: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] kNxzXvBDQk8: Private video\n" 15:34:13.357 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":10433,"quality_upgrade?":true},"id":16258,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1715200,"event":"job:exception","queue_time":209177,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:34:36.848 [info] {"source":"oban","duration":3745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:35:00.631 [info] {"source":"oban","duration":261,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:35:06.851 [info] {"source":"oban","duration":1582,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:35:36.852 [info] {"source":"oban","duration":966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:36:00.632 [info] {"source":"oban","duration":282,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:36:06.855 [info] {"source":"oban","duration":1652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:36:36.857 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:37:00.633 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:37:06.860 [info] {"source":"oban","duration":1378,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:37:36.861 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:38:00.634 [info] {"source":"oban","duration":261,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:38:06.863 [info] {"source":"oban","duration":1519,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:38:36.864 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:39:00.635 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:39:06.866 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:39:36.868 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:40:00.636 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:40:06.870 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:40:36.872 [info] {"source":"oban","duration":731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:41:00.637 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:41:06.874 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:41:36.876 [info] {"source":"oban","duration":626,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:42:00.638 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:42:06.877 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:42:36.879 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:43:00.639 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:43:06.881 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:43:36.883 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:44:00.640 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:44:06.885 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:44:36.886 [info] {"source":"oban","duration":668,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:45:00.641 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:45:06.887 [info] {"source":"oban","duration":918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:45:36.890 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:46:00.642 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:46:06.891 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:46:36.893 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:47:00.643 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:47:06.895 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:47:36.896 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:48:00.644 [info] {"source":"oban","duration":172,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:48:06.897 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:48:36.898 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:49:00.645 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:49:06.899 [info] {"source":"oban","duration":1030,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:49:36.901 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:50:00.646 [info] {"source":"oban","duration":316,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:50:06.903 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:50:36.905 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:51:00.647 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:51:06.906 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:51:36.907 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:52:00.648 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:52:06.908 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:52:36.910 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:53:00.649 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:53:06.912 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:53:36.914 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:54:00.650 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:54:06.916 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:54:36.918 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:55:00.651 [info] {"source":"oban","duration":298,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:55:06.920 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:55:36.922 [info] {"source":"oban","duration":890,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:56:00.652 [info] {"source":"oban","duration":246,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:56:06.924 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:56:36.926 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:57:00.653 [info] {"source":"oban","duration":672,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:57:06.927 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:57:36.928 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:58:00.654 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:58:06.930 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:58:36.932 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:59:00.655 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 15:59:06.934 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:59:36.936 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:00.656 [info] {"source":"oban","duration":418,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:00:06.938 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:36.939 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:01:00.657 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:01:06.941 [info] {"source":"oban","duration":675,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:01:36.942 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:02:00.658 [info] {"source":"oban","duration":289,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:02:06.944 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:02:36.946 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:03:00.659 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:03:06.948 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:03:36.950 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:04:00.660 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:04:06.952 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:04:36.953 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:05:00.661 [info] {"source":"oban","duration":109,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:05:06.955 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:05:36.957 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:06:00.662 [info] {"source":"oban","duration":251,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:06:06.958 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:06:36.960 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:07:00.663 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:07:06.962 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:07:36.964 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:08:00.664 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:08:06.965 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:08:36.967 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:09:00.665 [info] {"source":"oban","duration":259,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:09:06.968 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:09:36.970 [info] {"source":"oban","duration":1077,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:10:00.666 [info] {"source":"oban","duration":250,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:10:06.972 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:10:36.974 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:11:00.667 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:11:06.976 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:11:36.977 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:12:00.668 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:12:06.979 [info] {"source":"oban","duration":1038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:12:36.981 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:13:00.669 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:13:06.983 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:13:36.984 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:14:00.670 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:14:06.985 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:14:36.987 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:15:00.671 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:15:06.989 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:15:36.991 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:16:00.672 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:16:06.993 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:16:36.995 [info] {"source":"oban","duration":1138,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:17:00.673 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:17:06.996 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:17:36.998 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:18:00.674 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:18:06.999 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:18:37.000 [info] {"source":"oban","duration":926,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:19:00.675 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:19:07.002 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:19:37.003 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:20:00.676 [info] {"source":"oban","duration":165,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:20:07.004 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:20:37.005 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:21:00.677 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:21:07.006 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:21:37.008 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:22:00.678 [info] {"source":"oban","duration":262,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:22:07.010 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:22:37.011 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:23:00.679 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:23:07.013 [info] {"source":"oban","duration":659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:23:37.014 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:24:00.680 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:24:07.015 [info] {"source":"oban","duration":820,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:24:37.017 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:25:00.681 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:25:07.020 [info] {"source":"oban","duration":1128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:25:37.021 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:26:00.682 [info] {"source":"oban","duration":167,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:26:07.022 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:26:37.023 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:27:00.683 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:27:07.025 [info] {"source":"oban","duration":890,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:27:37.027 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:28:00.684 [info] {"source":"oban","duration":255,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:28:07.028 [info] {"source":"oban","duration":884,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:28:37.030 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:29:00.685 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:29:07.031 [info] {"source":"oban","duration":1020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:29:37.033 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:30:00.686 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:30:07.035 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:30:37.036 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:31:00.687 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:31:07.037 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:31:37.039 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:32:00.688 [info] {"source":"oban","duration":255,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:32:07.041 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:32:37.043 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:33:00.689 [info] {"source":"oban","duration":165,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:33:07.045 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:33:37.046 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:34:00.690 [info] {"source":"oban","duration":244,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:34:07.048 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:34:37.049 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:35:00.691 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:35:07.051 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:35:37.052 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:36:00.692 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:36:07.053 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:36:37.055 [info] {"source":"oban","duration":895,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:37:00.693 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:37:07.057 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:37:37.059 [info] {"source":"oban","duration":1049,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:38:00.694 [info] {"source":"oban","duration":296,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:38:07.061 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:38:37.063 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:39:00.695 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:39:07.065 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:39:37.067 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:40:00.696 [info] {"source":"oban","duration":267,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:40:07.068 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:40:37.070 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:41:00.697 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:41:07.072 [info] {"source":"oban","duration":983,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:41:37.074 [info] {"source":"oban","duration":448,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:42:00.698 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:42:07.075 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:42:37.077 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:43:00.699 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:43:07.078 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:43:37.080 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:44:00.700 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:44:07.082 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:44:37.083 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:45:00.701 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:45:07.085 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:45:37.087 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:46:00.702 [info] {"source":"oban","duration":254,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:46:07.089 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:46:37.090 [info] {"source":"oban","duration":655,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:47:00.703 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:47:07.091 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:47:37.093 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:48:00.704 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:48:07.095 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:48:37.096 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:49:00.705 [info] {"source":"oban","duration":360,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:49:07.097 [info] {"source":"oban","duration":961,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:49:37.099 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:50:00.706 [info] {"source":"oban","duration":366,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:50:07.100 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:50:37.102 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:51:00.707 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:51:07.103 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:51:37.105 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:52:00.708 [info] {"source":"oban","duration":255,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:52:07.107 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:52:37.109 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:53:00.709 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:53:07.111 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:53:37.113 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:53:37.990 [info] {"args":{"id":12669},"id":16285,"meta":{},"system_time":1792256017990831638,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:53:37.991 [debug] QUERY OK source="media_items" db=0.5ms idle=1277.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" = ?) [12669] 16:53:37.991 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:53:37.992 [debug] QUERY OK source="sources" db=0.2ms idle=1138.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 16:53:37.992 [debug] QUERY OK source="media_profiles" db=0.1ms idle=878.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] 16:53:37.993 [debug] QUERY OK source="media_items" db=0.3ms idle=10.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 [12669] 16:53:37.993 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12669] 16:53:37.994 [debug] QUERY OK source="media_profiles" db=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] 16:53:37.994 [debug] QUERY OK source="settings" db=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 [] 16:53:37.994 [debug] QUERY OK source="settings" db=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:53:37.995 [debug] Running yt-dlp command for action: get_downloadable_status 16:53:38.256 [debug] QUERY OK source="settings" db=0.1ms idle=263.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:53:38.257 [debug] QUERY OK source="settings" db=0.1ms idle=262.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:53:38.257 [debug] QUERY OK source="settings" db=0.2ms idle=262.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:53:38.257 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jHbXEaaLbPI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3c/05/3c05e6ab9f903dbd473ec0f8c7e0d721738fc2096a47ccd5a78649d7303644e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:53:39.685 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jHbXEaaLbPI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3c/05/3c05e6ab9f903dbd473ec0f8c7e0d721738fc2096a47ccd5a78649d7303644e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] jHbXEaaLbPI: This video is unavailable 16:53:39.685 [error] yt-dlp download error for media item #12669: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] jHbXEaaLbPI: This video is unavailable\n" 16:53:39.686 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":12669},"id":16285,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1694701,"event":"job:exception","queue_time":6939,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:54:00.710 [info] {"source":"oban","duration":254,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:54:07.119 [info] {"source":"oban","duration":4047,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:54:37.120 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:55:00.711 [info] {"source":"oban","duration":331,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:55:07.123 [info] {"source":"oban","duration":1096,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:55:37.124 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:56:00.712 [info] {"source":"oban","duration":282,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:56:07.126 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:56:37.129 [info] {"source":"oban","duration":1143,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:57:00.713 [info] {"source":"oban","duration":275,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:57:07.130 [info] {"source":"oban","duration":943,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:57:37.132 [info] {"source":"oban","duration":624,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:58:00.714 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:58:07.133 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:58:21.303 [info] {"args":{"id":11665},"id":16283,"meta":{},"system_time":1792256301302908238,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:58:21.303 [debug] QUERY OK source="media_items" db=0.2ms idle=589.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" = ?) [11665] 16:58:21.303 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:58:21.304 [debug] QUERY OK source="sources" db=0.1ms idle=589.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 16:58:21.304 [debug] QUERY OK source="media_profiles" db=0.1ms idle=590.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] 16:58:21.304 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [11665] 16:58:21.455 [debug] QUERY OK source="media_metadata" db=0.2ms idle=152.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" = ?) [11665] 16:58:21.456 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=152.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] 16:58:21.456 [debug] QUERY OK source="settings" db=0.1ms idle=152.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:58:21.456 [debug] QUERY OK source="settings" db=0.1ms idle=152.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:58:21.457 [debug] Running yt-dlp command for action: get_downloadable_status 16:58:21.599 [debug] QUERY OK source="settings" db=0.1ms idle=294.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:58:21.599 [debug] QUERY OK source="settings" db=0.2ms idle=144.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:58:21.600 [debug] QUERY OK source="settings" db=0.1ms idle=143.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:58:21.600 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=xjW5iQLugfw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c6/09/c60993d04ae0ee3db27d5dbd04c9cb65ccacd6f14ce3dbd8b656079c15b923bc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:58:23.047 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=xjW5iQLugfw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c6/09/c60993d04ae0ee3db27d5dbd04c9cb65ccacd6f14ce3dbd8b656079c15b923bc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] xjW5iQLugfw: This video is unavailable 16:58:23.047 [error] yt-dlp download error for media item #11665: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] xjW5iQLugfw: This video is unavailable\n" 16:58:23.095 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":11665},"id":16283,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1744563,"event":"job:exception","queue_time":516757,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:58:37.134 [info] {"source":"oban","duration":1050,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:59:00.715 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 16:59:07.137 [info] {"source":"oban","duration":1247,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:59:37.138 [info] {"source":"oban","duration":1020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:00:00.716 [info] {"source":"oban","duration":172,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:00:07.140 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:00:37.142 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:01:00.717 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:01:07.144 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:01:37.146 [info] {"source":"oban","duration":1191,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:02:00.718 [info] {"source":"oban","duration":356,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:02:07.147 [info] {"source":"oban","duration":646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:02:37.148 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:03:00.719 [info] {"source":"oban","duration":274,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:03:07.149 [info] {"source":"oban","duration":1058,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:03:37.151 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:04:00.720 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:04:07.153 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:04:37.155 [info] {"source":"oban","duration":1016,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:05:00.721 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:05:07.157 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:05:37.159 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:06:00.722 [info] {"source":"oban","duration":176,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:06:07.160 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:06:37.163 [info] {"source":"oban","duration":1151,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:07:00.723 [info] {"source":"oban","duration":256,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:07:07.164 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:07:37.165 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:08:00.724 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:08:07.167 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:08:37.168 [info] {"source":"oban","duration":672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:09:00.725 [info] {"source":"oban","duration":163,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:09:07.169 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:09:37.171 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:10:00.726 [info] {"source":"oban","duration":254,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:10:07.173 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:10:37.175 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:11:00.727 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:11:07.177 [info] {"source":"oban","duration":1127,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:11:37.178 [info] {"source":"oban","duration":580,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:12:00.728 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:12:07.179 [info] {"source":"oban","duration":655,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:12:37.180 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:13:00.729 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:13:07.182 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:13:37.184 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:14:00.730 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:14:07.186 [info] {"source":"oban","duration":909,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:14:37.188 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:15:00.731 [info] {"source":"oban","duration":166,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:15:07.190 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:15:37.191 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:16:00.732 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:16:07.193 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:16:37.194 [info] {"source":"oban","duration":652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:17:00.733 [info] {"source":"oban","duration":292,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:17:07.195 [info] {"source":"oban","duration":947,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:17:37.197 [info] {"source":"oban","duration":920,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:18:00.734 [info] {"source":"oban","duration":262,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:18:07.199 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:18:37.201 [info] {"source":"oban","duration":622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:19:00.735 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:19:07.202 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:19:37.204 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:20:00.736 [info] {"source":"oban","duration":229,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:20:07.206 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:20:37.208 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:21:00.737 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:21:07.210 [info] {"source":"oban","duration":1189,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:21:37.211 [info] {"source":"oban","duration":1012,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:22:00.738 [info] {"source":"oban","duration":283,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:22:07.213 [info] {"source":"oban","duration":1039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:22:37.215 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:23:00.739 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:23:07.217 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:23:37.219 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:24:00.740 [info] {"source":"oban","duration":221,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:24:07.220 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:24:37.221 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:25:00.741 [info] {"source":"oban","duration":251,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:25:07.223 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:25:37.224 [info] {"source":"oban","duration":813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:26:00.742 [info] {"source":"oban","duration":330,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:26:07.226 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:26:37.227 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:27:00.743 [info] {"source":"oban","duration":838,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:27:07.228 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:27:37.229 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:28:00.745 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:28:07.231 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:28:37.232 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:29:00.746 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:29:07.234 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:29:37.235 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:30:00.747 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:30:07.237 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:30:37.239 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:31:00.748 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:31:07.240 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:31:37.242 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:32:00.749 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:32:07.244 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:32:37.246 [info] {"source":"oban","duration":953,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:33:00.750 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:33:07.248 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:33:37.250 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:34:00.751 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:34:07.252 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:34:37.254 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:35:00.752 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:35:07.255 [info] {"source":"oban","duration":967,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:35:37.257 [info] {"source":"oban","duration":1070,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:36:00.753 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:36:07.259 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:36:37.260 [info] {"source":"oban","duration":647,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:37:00.754 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:37:07.261 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:37:37.263 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:38:00.755 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:38:07.264 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:38:37.266 [info] {"source":"oban","duration":852,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:39:00.756 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:39:07.268 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:39:30.055 [info] {"args":{"id":4850},"id":16280,"meta":{},"system_time":1792258770055780724,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 17:39:30.056 [debug] QUERY OK source="media_items" db=0.6ms idle=1342.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" = ?) [4850] 17:39:30.057 [info] User scripts lifecyle file either not present or is empty. Skipping. 17:39:30.057 [debug] QUERY OK source="sources" db=0.2ms idle=1343.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 17:39:30.057 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1071.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] 17:39:30.058 [debug] QUERY OK source="media_items" db=0.2ms idle=27.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 [4850] 17:39:30.059 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.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" = ?) [4850] 17:39:30.059 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 17:39:30.059 [debug] QUERY OK source="settings" db=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 [] 17:39:30.059 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:39:30.060 [debug] Running yt-dlp command for action: get_downloadable_status 17:39:30.060 [debug] QUERY OK source="settings" db=0.0ms 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 [] 17:39:30.060 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:39:30.061 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:39:30.061 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5zCPVPjdFYE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/70/c1/70c1fa57cf2e0e11bed11f36be04034ff935cced84eeb3da1125866917d50e45.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 17:39:31.497 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5zCPVPjdFYE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/70/c1/70c1fa57cf2e0e11bed11f36be04034ff935cced84eeb3da1125866917d50e45.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 5zCPVPjdFYE: This video is unavailable 17:39:31.497 [error] yt-dlp download error for media item #4850: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 5zCPVPjdFYE: This video is unavailable\n" 17:39:31.498 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":4850},"id":16280,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1442107,"event":"job:exception","queue_time":444779,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 17:39:37.273 [info] {"source":"oban","duration":3576,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:40:00.757 [info] {"source":"oban","duration":351,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:40:07.275 [info] {"source":"oban","duration":1436,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:40:37.277 [info] {"source":"oban","duration":1268,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:41:00.758 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:41:03.142 [info] {"args":{"id":7021},"id":16281,"meta":{},"system_time":1792258863142100572,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 17:41:03.142 [debug] QUERY OK source="media_items" db=0.3ms idle=428.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" = ?) [7021] 17:41:03.142 [info] User scripts lifecyle file either not present or is empty. Skipping. 17:41:03.143 [debug] QUERY OK source="sources" db=0.2ms idle=429.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 17:41:03.143 [debug] QUERY OK source="media_profiles" db=0.1ms idle=429.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] 17:41:03.144 [debug] QUERY OK source="media_items" db=0.3ms idle=8.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 [7021] 17:41:03.145 [debug] QUERY OK source="media_metadata" db=0.0ms idle=3.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" = ?) [7021] 17:41:03.145 [debug] QUERY OK source="media_profiles" db=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] 17:41:03.145 [debug] QUERY OK source="settings" db=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 [] 17:41:03.145 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:41:03.146 [debug] Running yt-dlp command for action: get_downloadable_status 17:41:03.209 [debug] QUERY OK source="settings" db=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 [] 17:41:03.209 [debug] QUERY OK source="settings" db=0.2ms 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 [] 17:41:03.209 [debug] QUERY OK source="settings" db=0.0ms 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 [] 17:41:03.209 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jUl-hFvigtE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/56/28561175c23ff6f50f956fe7579209b51ed9db290cc157992acb894465b86837.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 17:41:04.674 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jUl-hFvigtE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/56/28561175c23ff6f50f956fe7579209b51ed9db290cc157992acb894465b86837.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] jUl-hFvigtE: This video is unavailable 17:41:04.674 [error] yt-dlp download error for media item #7021: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] jUl-hFvigtE: This video is unavailable\n" 17:41:04.675 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":7021},"id":16281,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1532353,"event":"job:exception","queue_time":934245,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 17:41:07.279 [info] {"source":"oban","duration":1288,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:41:37.281 [info] {"source":"oban","duration":1134,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:42:00.759 [info] {"source":"oban","duration":248,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:42:07.282 [info] {"source":"oban","duration":1080,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:42:37.284 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:43:00.760 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:43:07.286 [info] {"source":"oban","duration":912,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:43:37.288 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:44:00.761 [info] {"source":"oban","duration":240,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:44:07.289 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:44:37.291 [info] {"source":"oban","duration":957,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:45:00.762 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:45:07.293 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:45:37.295 [info] {"source":"oban","duration":1027,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:46:00.763 [info] {"source":"oban","duration":268,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:46:07.297 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:46:37.299 [info] {"source":"oban","duration":1197,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:47:00.764 [info] {"source":"oban","duration":294,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:47:07.300 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:47:37.302 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:48:00.765 [info] {"source":"oban","duration":595,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:48:07.303 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:48:37.305 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:49:00.766 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:49:07.307 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:49:37.309 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:50:00.767 [info] {"source":"oban","duration":369,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:50:07.311 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:50:37.313 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:51:00.768 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:51:07.315 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:51:37.317 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:52:00.769 [info] {"source":"oban","duration":274,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:52:07.319 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:52:37.320 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:53:00.770 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:53:07.322 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:53:37.323 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:54:00.771 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:54:07.326 [info] {"source":"oban","duration":1152,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:54:37.327 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:55:00.772 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:55:07.329 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:55:37.330 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:56:00.773 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:56:07.332 [info] {"source":"oban","duration":634,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:56:37.333 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:57:00.774 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:57:07.336 [info] {"source":"oban","duration":1156,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:57:37.337 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:58:00.775 [info] {"source":"oban","duration":229,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:58:07.295 [info] {"args":{"id":11955},"id":16284,"meta":{},"system_time":1792259887295448043,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 17:58:07.297 [debug] QUERY OK source="media_items" db=1.3ms idle=581.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" = ?) [11955] 17:58:07.297 [info] User scripts lifecyle file either not present or is empty. Skipping. 17:58:07.297 [debug] QUERY OK source="sources" db=0.2ms idle=583.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 17:58:07.298 [debug] QUERY OK source="media_profiles" db=0.2ms idle=583.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] 17:58:07.298 [debug] QUERY OK source="media_items" db=0.3ms idle=14.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [11955] 17:58:07.299 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.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" = ?) [11955] 17:58:07.299 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 17:58:07.299 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:58:07.300 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:58:07.300 [debug] Running yt-dlp command for action: get_downloadable_status 17:58:07.342 [info] {"source":"oban","duration":3644,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:58:07.400 [debug] QUERY OK source="settings" db=0.1ms idle=100.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:58:07.401 [debug] QUERY OK source="settings" db=0.5ms idle=100.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:58:07.401 [debug] QUERY OK source="settings" db=0.4ms idle=101.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:58:07.401 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5QbGjTRZRfE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3f/1a/3f1ae7e5793d022c4133c06c3af712f6f065d46876848542ed871015c4c65efa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 17:58:08.911 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5QbGjTRZRfE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3f/1a/3f1ae7e5793d022c4133c06c3af712f6f065d46876848542ed871015c4c65efa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 5QbGjTRZRfE: This video is unavailable 17:58:08.912 [error] yt-dlp download error for media item #11955: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 5QbGjTRZRfE: This video is unavailable\n" 17:58:08.912 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":11955},"id":16284,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1616683,"event":"job:exception","queue_time":635827,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 17:58:37.344 [info] {"source":"oban","duration":1154,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:59:00.776 [info] {"source":"oban","duration":171,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 17:59:07.345 [info] {"source":"oban","duration":1041,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:59:37.348 [info] {"source":"oban","duration":1473,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:00:00.777 [info] {"source":"oban","duration":259,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:00:07.350 [info] {"source":"oban","duration":1158,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:00:37.351 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:01:00.778 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:01:07.353 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:01:37.354 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:02:00.779 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:02:07.356 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:02:37.358 [info] {"source":"oban","duration":967,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:03:00.780 [info] {"source":"oban","duration":250,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:03:07.360 [info] {"source":"oban","duration":1041,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:03:37.362 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:04:00.781 [info] {"source":"oban","duration":271,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:04:07.364 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:04:37.369 [info] {"source":"oban","duration":3182,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:05:00.782 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:05:07.370 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:05:37.372 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:06:00.782 [info] {"source":"oban","duration":100,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:06:07.373 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:06:37.375 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:07:00.784 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:07:07.377 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:07:37.378 [info] {"source":"oban","duration":650,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:08:00.785 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:08:07.379 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:08:37.380 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:09:00.786 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:09:07.381 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:09:37.382 [info] {"source":"oban","duration":808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:10:00.787 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:10:07.384 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:10:37.386 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:11:00.788 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:11:07.387 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:11:37.389 [info] {"source":"oban","duration":585,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:11:45.197 [info] {"args":{"id":10623},"id":16282,"meta":{},"system_time":1792260705197357527,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 18:11:45.198 [debug] QUERY OK source="media_items" db=0.4ms idle=483.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" = ?) [10623] 18:11:45.198 [info] User scripts lifecyle file either not present or is empty. Skipping. 18:11:45.198 [debug] QUERY OK source="sources" db=0.2ms idle=484.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" = ?) [3] 18:11:45.198 [debug] QUERY OK source="media_profiles" db=0.1ms idle=484.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] 18:11:45.199 [debug] QUERY OK source="media_items" db=0.2ms 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 [10623] 18:11:45.346 [debug] QUERY OK source="media_metadata" db=0.2ms idle=149.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" = ?) [10623] 18:11:45.347 [debug] QUERY OK source="media_profiles" db=0.2ms idle=148.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] 18:11:45.347 [debug] QUERY OK source="settings" db=0.1ms idle=148.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:11:45.347 [debug] QUERY OK source="settings" db=0.1ms idle=148.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:11:45.348 [debug] Running yt-dlp command for action: get_downloadable_status 18:11:45.799 [debug] QUERY OK source="settings" db=0.1ms idle=599.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:11:45.799 [debug] QUERY OK source="settings" db=0.0ms idle=452.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:11:45.800 [debug] QUERY OK source="settings" db=0.1ms idle=452.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:11:45.800 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nfuQQigzNu0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/51/44/514403c6362d8bbe1e4bf30e8bc89f222e0553e98201294227d2eaf3564192f0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 18:11:47.248 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nfuQQigzNu0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/51/44/514403c6362d8bbe1e4bf30e8bc89f222e0553e98201294227d2eaf3564192f0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] nfuQQigzNu0: This video is unavailable 18:11:47.248 [error] yt-dlp download error for media item #10623: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] nfuQQigzNu0: This video is unavailable\n" 18:11:47.249 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":10623},"id":16282,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":2051685,"event":"job:exception","queue_time":933761,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 18:12:00.789 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:12:07.391 [info] {"source":"oban","duration":1170,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:12:37.392 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:13:00.790 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:13:07.395 [info] {"source":"oban","duration":1141,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:13:37.396 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:14:00.791 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:14:07.398 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:14:37.401 [info] {"source":"oban","duration":1255,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:15:00.792 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:15:07.402 [info] {"source":"oban","duration":396,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:15:37.404 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:16:00.793 [info] {"source":"oban","duration":256,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:16:07.405 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:16:37.406 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:17:00.794 [info] {"source":"oban","duration":489,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:17:07.408 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:17:37.410 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:18:00.795 [info] {"source":"oban","duration":166,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:18:07.412 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:18:37.414 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:19:00.796 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:19:07.416 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:19:37.418 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:20:00.797 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:20:07.421 [info] {"source":"oban","duration":1432,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:20:37.422 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:21:00.798 [info] {"source":"oban","duration":253,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:21:07.424 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:21:16.801 [info] {"args":{"id":13020},"id":16286,"meta":{},"system_time":1792261276801859046,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 18:21:16.802 [debug] QUERY OK source="media_items" db=0.4ms idle=88.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" = ?) [13020] 18:21:16.802 [info] User scripts lifecyle file either not present or is empty. Skipping. 18:21:16.803 [debug] QUERY OK source="sources" db=0.2ms idle=88.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 18:21:16.803 [debug] QUERY OK source="media_profiles" db=0.2ms idle=89.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] 18:21:16.804 [debug] QUERY OK source="media_items" db=0.2ms idle=9.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13020] 18:21:16.889 [debug] QUERY OK source="media_metadata" db=0.1ms idle=87.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" = ?) [13020] 18:21:16.889 [debug] QUERY OK source="media_profiles" db=0.0ms idle=87.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 18:21:16.890 [debug] QUERY OK source="settings" db=0.1ms idle=86.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:21:16.890 [debug] QUERY OK source="settings" db=0.0ms idle=86.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:21:16.890 [debug] Running yt-dlp command for action: get_downloadable_status 18:21:16.891 [debug] QUERY OK source="settings" db=0.0ms idle=86.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:21:16.891 [debug] QUERY OK source="settings" db=0.0ms 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 [] 18:21:16.891 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:21:16.891 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=072D9DLhNwA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e6/77/e6772c3ebee8527de327f6ec02605eebf0c70e2fe4122438854ec23ecf4ba975.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 18:21:18.286 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=072D9DLhNwA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e6/77/e6772c3ebee8527de327f6ec02605eebf0c70e2fe4122438854ec23ecf4ba975.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 072D9DLhNwA: This video is unavailable 18:21:18.287 [error] yt-dlp download error for media item #13020: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 072D9DLhNwA: This video is unavailable\n" 18:21:18.854 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13020},"id":16286,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1485404,"event":"job:exception","queue_time":771803,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 18:21:33.130 [info] GET / 18:21:33.130 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 18:21:33.130 [debug] QUERY OK source="settings" db=0.2ms idle=416.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:21:33.131 [debug] QUERY OK source="media_profiles" db=0.0ms idle=417.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 18:21:33.131 [debug] QUERY OK source="sources" db=0.1ms idle=417.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 18:21:33.155 [debug] QUERY OK source="media_items" db=23.8ms idle=417.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 18:21:33.159 [debug] QUERY OK source="media_items" db=3.6ms idle=340.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 18:21:33.159 [debug] QUERY OK source="settings" db=0.2ms idle=28.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:21:33.160 [debug] QUERY OK source="settings" db=0.0ms 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 [] 18:21:33.160 [debug] QUERY OK source="settings" db=0.1ms idle=28.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:21:33.161 [debug] QUERY OK source="tasks" db=0.1ms idle=5.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"] 18:21:33.162 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 18:21:33.163 [debug] QUERY OK source="media_items" db=0.3ms idle=2.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 18:21:33.163 [debug] QUERY OK source="sources" db=0.1ms idle=3.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 (?,?,?)) [6, 4, 7] 18:21:33.171 [debug] QUERY OK source="media_items" db=7.2ms idle=3.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"))) [] 18:21:33.172 [debug] QUERY OK source="media_items" db=1.0ms idle=10.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] 18:21:33.173 [debug] QUERY OK source="sources" db=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 (?,?)) [7, 3] 18:21:33.174 [info] Sent 200 in 43ms 18:21:37.425 [info] {"source":"oban","duration":1015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:22:00.799 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:22:07.428 [info] {"source":"oban","duration":1330,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:22:37.429 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:23:00.800 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:23:07.431 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:23:37.433 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:24:00.801 [info] {"source":"oban","duration":252,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:24:07.434 [info] {"source":"oban","duration":634,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:24:37.435 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:25:00.802 [info] {"source":"oban","duration":159,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:25:07.438 [info] {"source":"oban","duration":1235,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:25:37.440 [info] {"source":"oban","duration":1129,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:26:00.803 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:26:07.441 [info] {"source":"oban","duration":668,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:26:37.442 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:27:00.804 [info] {"source":"oban","duration":168,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:27:07.444 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:27:37.446 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:28:00.805 [info] {"source":"oban","duration":153,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:28:07.448 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:28:37.449 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:29:00.806 [info] {"source":"oban","duration":166,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:29:07.451 [info] {"source":"oban","duration":1015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:29:37.453 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:30:00.807 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:30:07.454 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:30:37.456 [info] {"source":"oban","duration":984,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:31:00.808 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:31:07.458 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:31:37.459 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:32:00.809 [info] {"source":"oban","duration":160,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:32:07.461 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:32:37.463 [info] {"source":"oban","duration":923,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:33:00.810 [info] {"source":"oban","duration":404,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:33:07.465 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:33:37.466 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:34:00.811 [info] {"source":"oban","duration":257,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:34:07.468 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:34:37.469 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:35:00.812 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:35:07.470 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:35:37.471 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:36:00.813 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:36:07.473 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:36:37.475 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:37:00.814 [info] {"source":"oban","duration":221,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:37:07.476 [info] {"source":"oban","duration":608,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:37:37.477 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:38:00.815 [info] {"source":"oban","duration":270,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:38:07.479 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:38:37.481 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:39:00.816 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:39:07.483 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:39:37.484 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:40:00.817 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:40:07.486 [info] {"source":"oban","duration":1352,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:40:37.487 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:41:00.818 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:41:07.489 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:41:37.491 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:42:00.819 [info] {"source":"oban","duration":289,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:42:07.493 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:42:37.494 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:43:00.820 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:43:07.496 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:43:37.499 [info] {"source":"oban","duration":1185,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:44:00.821 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:44:07.500 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:44:37.501 [info] {"source":"oban","duration":973,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:45:00.822 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:45:07.504 [info] {"source":"oban","duration":950,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:45:37.505 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:46:00.823 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:46:07.506 [info] {"source":"oban","duration":384,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:46:37.507 [info] {"source":"oban","duration":808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:47:00.824 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:47:07.509 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:47:37.511 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:48:00.825 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:48:07.513 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:48:37.515 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:49:00.826 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:49:07.517 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:49:37.518 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:50:00.827 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:50:07.520 [info] {"source":"oban","duration":625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:50:37.521 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:51:00.828 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:51:07.522 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:51:13.008 [info] GET / 18:51:13.008 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 18:51:13.009 [debug] QUERY OK source="settings" db=0.2ms idle=1788.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:51:13.009 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1789.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 18:51:13.009 [debug] QUERY OK source="sources" db=0.1ms idle=1789.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 18:51:13.044 [debug] QUERY OK source="media_items" db=34.7ms idle=1182.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 18:51:13.046 [debug] QUERY OK source="media_items" db=1.3ms idle=215.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 18:51:13.046 [debug] QUERY OK source="settings" db=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 [] 18:51:13.046 [debug] QUERY OK source="settings" db=0.1ms idle=37.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:51:13.047 [debug] QUERY OK source="settings" db=0.2ms 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 [] 18:51:13.048 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 18:51:13.050 [debug] QUERY OK source="media_items" db=1.3ms idle=2.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)) [] 18:51:13.050 [debug] QUERY OK source="media_items" db=0.2ms idle=3.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 18:51:13.051 [debug] QUERY OK source="sources" db=0.2ms 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" IN (?,?,?)) [6, 4, 7] 18:51:13.054 [debug] QUERY OK source="media_items" db=2.4ms idle=4.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:51:13.055 [debug] QUERY OK source="media_items" db=1.0ms idle=6.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] 18:51:13.056 [debug] QUERY OK source="sources" db=0.3ms idle=6.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 18:51:13.057 [info] Sent 200 in 49ms 18:51:14.073 [info] GET / 18:51:14.073 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 18:51:14.073 [debug] QUERY OK source="settings" db=0.4ms 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 [] 18:51:14.074 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1019.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 18:51:14.074 [debug] QUERY OK source="sources" db=0.0ms idle=1018.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 18:51:14.366 [debug] QUERY OK source="media_items" db=292.3ms idle=1017.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 18:51:14.369 [debug] QUERY OK source="media_items" db=2.7ms idle=536.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 18:51:14.370 [debug] QUERY OK source="settings" db=0.1ms idle=296.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:51:14.370 [debug] QUERY OK source="settings" db=0.1ms idle=296.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:51:14.370 [debug] QUERY OK source="settings" db=0.1ms idle=296.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:51:14.371 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 18:51:14.373 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 18:51:14.373 [debug] QUERY OK source="media_items" db=0.3ms idle=3.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 18:51:14.374 [debug] QUERY OK source="sources" db=0.2ms idle=3.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 (?,?,?)) [6, 4, 7] 18:51:14.377 [debug] QUERY OK source="media_items" db=2.2ms idle=4.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:51:14.379 [debug] QUERY OK source="media_items" db=1.4ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 18:51:14.379 [debug] QUERY OK source="sources" db=0.3ms idle=6.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 (?,?)) [7, 3] 18:51:14.380 [info] Sent 200 in 307ms 18:51:37.524 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:52:00.829 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:52:07.525 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:52:37.526 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:53:00.830 [info] {"source":"oban","duration":298,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:53:07.528 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:53:37.530 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:54:00.831 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:54:07.531 [info] {"source":"oban","duration":923,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:54:37.533 [info] {"source":"oban","duration":920,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:55:00.832 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:55:07.535 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:55:37.537 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:56:00.833 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:56:07.538 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:56:37.540 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:57:00.834 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:57:07.543 [info] {"source":"oban","duration":1078,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:57:37.544 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:58:00.835 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:58:07.546 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:58:37.548 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:59:00.836 [info] {"source":"oban","duration":492,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 18:59:07.549 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:59:37.550 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:00:00.837 [info] {"source":"oban","duration":283,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:00:07.552 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:00:37.554 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:01:00.838 [info] {"source":"oban","duration":257,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:01:07.555 [info] {"source":"oban","duration":893,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:01:37.557 [info] {"source":"oban","duration":916,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:02:00.839 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:02:07.559 [info] {"source":"oban","duration":638,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:02:37.560 [info] {"source":"oban","duration":625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:03:00.840 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:03:07.561 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:03:37.562 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:04:00.841 [info] {"source":"oban","duration":372,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:04:07.564 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:04:37.565 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:05:00.842 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:05:07.566 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:05:37.568 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:06:00.843 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:06:07.570 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:06:37.571 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:07:00.844 [info] {"source":"oban","duration":353,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:07:07.573 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:07:37.575 [info] {"source":"oban","duration":1168,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:08:00.845 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:08:07.576 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:08:37.577 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:09:00.846 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:09:07.579 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:09:37.581 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:10:00.847 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:10:07.582 [info] {"source":"oban","duration":910,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:10:37.584 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:11:00.848 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:11:07.586 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:11:37.588 [info] {"source":"oban","duration":1058,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:12:00.849 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:12:07.590 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:12:37.591 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:13:00.850 [info] {"source":"oban","duration":279,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:13:07.592 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:13:37.594 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:14:00.851 [info] {"source":"oban","duration":170,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:14:07.595 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:14:37.596 [info] {"source":"oban","duration":628,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:15:00.852 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:15:07.597 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:15:37.599 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:16:00.853 [info] {"source":"oban","duration":167,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:16:07.600 [info] {"source":"oban","duration":613,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:16:37.601 [info] {"source":"oban","duration":769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:17:00.854 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:17:07.603 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:17:12.179 [info] GET /media_profiles/new 19:17:12.179 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{"template_id" => "1"} Pipelines: [:browser] 19:17:12.180 [debug] QUERY OK source="media_profiles" db=0.4ms idle=840.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 WHERE (m0."id" = ?) [1] 19:17:12.180 [debug] QUERY OK source="settings" db=0.0ms idle=841.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:17:12.180 [debug] QUERY OK source="settings" db=0.2ms idle=841.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:17:12.181 [debug] QUERY OK source="settings" db=0.1ms 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:17:12.181 [debug] QUERY OK source="settings" db=0.1ms idle=630.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:17:12.181 [debug] QUERY OK source="settings" db=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 19:17:12.183 [info] Sent 200 in 3ms 19:17:37.605 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:18:00.855 [info] {"source":"oban","duration":174,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:18:07.606 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:18:37.608 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:19:00.856 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:19:07.609 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:19:37.611 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:20:00.857 [info] {"source":"oban","duration":275,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:20:07.612 [info] {"source":"oban","duration":1017,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:20:37.614 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:21:00.858 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:21:07.616 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:21:37.617 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:22:00.859 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:22:07.619 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:22:37.620 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:23:00.860 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:23:07.621 [info] {"source":"oban","duration":954,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:23:37.623 [info] {"source":"oban","duration":586,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:24:00.861 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:24:07.624 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:24:37.626 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:25:00.862 [info] {"source":"oban","duration":229,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:25:07.628 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:25:37.630 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:26:00.863 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:26:07.632 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:26:37.634 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:27:00.864 [info] {"source":"oban","duration":269,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:27:07.635 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:27:37.636 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:28:00.865 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:28:07.638 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:28:37.640 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:29:00.866 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:29:07.641 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:29:37.642 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:30:00.867 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:30:07.644 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:30:37.646 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:31:00.868 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:31:07.648 [info] {"source":"oban","duration":894,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:31:37.651 [info] {"source":"oban","duration":1078,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:32:00.869 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:32:07.652 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:32:37.653 [info] {"source":"oban","duration":668,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:33:00.870 [info] {"source":"oban","duration":267,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:33:07.654 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:33:37.656 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:34:00.871 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:34:07.658 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:34:37.660 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:35:00.872 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:35:07.662 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:35:37.663 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:36:00.873 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:36:07.665 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:36:37.667 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:37:00.874 [info] {"source":"oban","duration":245,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:37:07.668 [info] {"source":"oban","duration":780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:37:37.670 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:38:00.875 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:38:07.672 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:38:37.674 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:39:00.876 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:39:07.676 [info] {"source":"oban","duration":632,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:39:37.677 [info] {"source":"oban","duration":613,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:40:00.877 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:40:07.678 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:40:37.680 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:41:00.878 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:41:07.682 [info] {"source":"oban","duration":932,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:41:37.684 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:42:00.879 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:42:07.685 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:42:37.687 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:43:00.880 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:43:07.689 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:43:37.691 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:44:00.881 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:44:07.692 [info] {"source":"oban","duration":613,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:44:37.693 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:45:00.882 [info] {"source":"oban","duration":326,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:45:07.695 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:45:37.697 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:46:00.883 [info] {"source":"oban","duration":172,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:46:07.698 [info] {"source":"oban","duration":909,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:46:37.700 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:47:00.884 [info] {"source":"oban","duration":383,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:47:07.702 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:47:37.704 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:48:00.885 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:48:07.705 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:48:37.707 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:49:00.886 [info] {"source":"oban","duration":257,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:49:07.709 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:49:37.710 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:50:00.887 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:50:07.711 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:50:37.712 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:51:00.888 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:51:07.713 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:51:37.714 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:52:00.889 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:52:07.716 [info] {"source":"oban","duration":919,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:52:37.718 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:53:00.890 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:53:07.720 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:53:37.721 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:54:00.891 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:54:07.723 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:54:37.725 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:55:00.892 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:55:07.727 [info] {"source":"oban","duration":941,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:55:37.729 [info] {"source":"oban","duration":808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:56:00.893 [info] {"source":"oban","duration":271,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:56:07.731 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:56:37.732 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:57:00.894 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:57:07.733 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:57:37.734 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:58:00.895 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:58:07.736 [info] {"source":"oban","duration":649,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:58:37.737 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:59:00.896 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 19:59:07.739 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:59:37.741 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:00:00.897 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:00:07.743 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:00:37.744 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:01:00.898 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:01:07.746 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:01:37.748 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:02:00.899 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:02:07.749 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:02:37.750 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:03:00.900 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:03:07.752 [info] {"source":"oban","duration":672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:03:37.753 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:04:00.901 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:04:07.755 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:04:37.757 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:05:00.902 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:05:07.758 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:05:37.759 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:06:00.903 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:06:07.760 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:06:37.762 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:07:00.904 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:07:07.763 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:07:37.765 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:08:00.905 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:08:07.767 [info] {"source":"oban","duration":975,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:08:37.769 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:09:00.906 [info] {"source":"oban","duration":285,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:09:07.771 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:09:37.773 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:10:00.907 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:10:07.775 [info] {"source":"oban","duration":1106,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:10:37.776 [info] {"source":"oban","duration":672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:11:00.908 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:11:07.777 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:11:37.778 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:12:00.909 [info] {"source":"oban","duration":251,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:12:07.779 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:12:37.781 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:13:00.910 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:13:07.783 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:13:37.784 [info] {"source":"oban","duration":647,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:14:00.911 [info] {"source":"oban","duration":586,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:14:07.785 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:14:37.787 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:15:00.912 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:15:07.788 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:15:37.789 [info] {"source":"oban","duration":915,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:16:00.913 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:16:07.791 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:16:37.793 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:17:00.914 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:17:07.794 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:17:37.796 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:18:00.915 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:18:07.797 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:18:37.798 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:19:00.916 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:19:07.800 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:19:37.801 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:20:00.917 [info] {"source":"oban","duration":172,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:20:07.803 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:20:37.804 [info] {"source":"oban","duration":994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:21:00.918 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:21:07.806 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:21:37.807 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:22:00.919 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:22:07.809 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:22:37.811 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:23:00.920 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:23:07.814 [info] {"source":"oban","duration":1091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:23:37.815 [info] {"source":"oban","duration":663,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:24:00.921 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:24:07.816 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:24:37.817 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:25:00.922 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:25:07.819 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:25:37.821 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:26:00.923 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:26:07.823 [info] {"source":"oban","duration":621,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:26:37.824 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:27:00.924 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:27:07.826 [info] {"source":"oban","duration":1023,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:27:37.828 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:28:00.925 [info] {"source":"oban","duration":288,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:28:07.830 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:28:37.831 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:29:00.926 [info] {"source":"oban","duration":389,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:29:07.833 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:29:37.835 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:30:00.927 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:30:07.836 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:30:37.838 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:31:00.928 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:31:07.840 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:31:37.841 [info] {"source":"oban","duration":668,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:32:00.929 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:32:07.842 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:32:37.843 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:33:00.930 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:33:07.844 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:33:37.845 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:34:00.931 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:34:07.847 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:34:37.848 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:35:00.932 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:35:07.850 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:35:37.851 [info] {"source":"oban","duration":918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:36:00.933 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:36:07.853 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:36:37.855 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:37:00.934 [info] {"source":"oban","duration":266,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:37:07.857 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:37:37.858 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:38:00.935 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:38:07.859 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:38:37.861 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:39:00.936 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:39:07.863 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:39:37.865 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:40:00.937 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:40:07.867 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:40:37.868 [info] {"source":"oban","duration":851,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:41:00.938 [info] {"source":"oban","duration":246,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:41:07.870 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:41:37.871 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:42:00.939 [info] {"source":"oban","duration":176,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:42:07.873 [info] {"source":"oban","duration":907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:42:37.875 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:43:00.940 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:43:07.876 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:43:37.877 [info] {"source":"oban","duration":1079,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:44:00.941 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:44:07.879 [info] {"source":"oban","duration":675,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:44:37.880 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:45:00.942 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:45:07.882 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:45:37.884 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:46:00.943 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:46:07.886 [info] {"source":"oban","duration":977,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:46:37.888 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:47:00.944 [info] {"source":"oban","duration":249,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:47:07.889 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:47:37.891 [info] {"source":"oban","duration":632,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:48:00.945 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:48:07.892 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:48:37.894 [info] {"source":"oban","duration":1087,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:49:00.946 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:49:07.896 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:49:37.897 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:50:00.947 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:50:07.898 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:50:37.900 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:51:00.948 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:51:07.902 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:51:37.903 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:52:00.949 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:52:07.905 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:52:37.907 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:53:00.950 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:53:07.909 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:53:37.910 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:54:00.951 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:54:07.911 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:54:37.913 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:55:00.952 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:55:07.914 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:55:37.916 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:56:00.953 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:56:07.917 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:56:37.918 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:57:00.954 [info] {"source":"oban","duration":169,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:57:07.920 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:57:37.921 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:58:00.955 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:58:07.923 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:58:37.924 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:59:00.956 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 20:59:07.925 [info] {"source":"oban","duration":646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:59:37.926 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:00:00.957 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:00:07.927 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:00:37.929 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:01:00.958 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:01:07.931 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:01:37.933 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:02:00.959 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:02:07.935 [info] {"source":"oban","duration":1110,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:02:37.937 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:03:00.960 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:03:07.939 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:03:37.940 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:04:00.961 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:04:07.941 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:04:37.942 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:05:00.962 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:05:07.944 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:05:37.945 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:06:00.963 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:06:07.946 [info] {"source":"oban","duration":873,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:06:37.948 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:07:00.964 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:07:07.949 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:07:37.950 [info] {"source":"oban","duration":646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:08:00.965 [info] {"source":"oban","duration":170,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:08:07.951 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:08:37.953 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:09:00.966 [info] {"source":"oban","duration":170,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:09:07.954 [info] {"source":"oban","duration":636,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:09:37.955 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:10:00.967 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:10:07.957 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:10:37.959 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:11:00.968 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:11:07.960 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:11:37.963 [info] {"source":"oban","duration":1942,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:12:00.969 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:12:07.965 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:12:37.966 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:13:00.970 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:13:07.968 [info] {"source":"oban","duration":922,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:13:37.970 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:14:00.971 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:14:07.972 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:14:37.974 [info] {"source":"oban","duration":690,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:15:00.972 [info] {"source":"oban","duration":241,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:15:07.984 [info] {"source":"oban","duration":9308,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:15:37.985 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:16:00.973 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:16:07.986 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:16:37.987 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:17:00.974 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:17:07.988 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:17:37.989 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:18:00.975 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:18:07.990 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:18:37.992 [info] {"source":"oban","duration":657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:19:00.976 [info] {"source":"oban","duration":168,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:19:07.993 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:19:37.995 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:20:00.977 [info] {"source":"oban","duration":163,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:20:07.996 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:20:37.997 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:21:00.978 [info] {"source":"oban","duration":167,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:21:07.998 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:21:37.999 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:22:00.979 [info] {"source":"oban","duration":262,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:22:08.001 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:22:38.002 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:23:00.980 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:23:08.004 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:23:38.006 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:24:00.981 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:24:08.007 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:24:23.633 [info] GET / 21:24:23.633 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 21:24:23.634 [debug] QUERY OK source="settings" db=0.2ms idle=1849.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:24:23.634 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1849.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 21:24:23.635 [debug] QUERY OK source="sources" db=0.3ms idle=1849.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 21:24:23.643 [debug] QUERY OK source="media_items" db=8.8ms idle=1850.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 21:24:23.657 [debug] QUERY OK source="media_items" db=13.0ms idle=978.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 21:24:23.657 [debug] QUERY OK source="settings" db=0.1ms 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 [] 21:24:23.657 [debug] QUERY OK source="settings" db=0.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 [] 21:24:23.658 [debug] QUERY OK source="settings" db=0.0ms 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 [] 21:24:23.658 [debug] QUERY OK source="tasks" db=0.1ms idle=14.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"] 21:24:23.660 [debug] QUERY OK source="media_items" db=1.4ms idle=2.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)) [] 21:24:23.661 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 21:24:23.661 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?,?)) [6, 4, 7] 21:24:23.664 [debug] QUERY OK source="media_items" db=2.2ms idle=3.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"))) [] 21:24:23.665 [debug] QUERY OK source="media_items" db=1.4ms 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 INNER JOIN "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] 21:24:23.666 [debug] QUERY OK source="sources" db=0.2ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 21:24:23.667 [info] Sent 200 in 33ms 21:24:24.766 [info] GET / 21:24:24.766 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 21:24:24.766 [debug] QUERY OK source="settings" db=0.2ms idle=1102.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:24:24.767 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1101.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 21:24:24.767 [debug] QUERY OK source="sources" db=0.0ms idle=1100.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 21:24:24.783 [debug] QUERY OK source="media_items" db=15.7ms idle=1100.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 21:24:24.785 [debug] QUERY OK source="media_items" db=2.1ms idle=115.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 21:24:24.785 [debug] QUERY OK source="settings" db=0.1ms 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 [] 21:24:24.785 [debug] QUERY OK source="settings" db=0.0ms 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 [] 21:24:24.786 [debug] QUERY OK source="settings" db=0.0ms 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 [] 21:24:24.786 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 21:24:24.787 [debug] QUERY OK source="media_items" db=0.7ms idle=1.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)) [] 21:24:24.788 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 21:24:24.788 [debug] QUERY OK source="sources" db=0.2ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 21:24:24.793 [debug] QUERY OK source="media_items" db=3.8ms idle=2.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"))) [] 21:24:24.794 [debug] QUERY OK source="media_items" db=0.9ms idle=6.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] 21:24:24.794 [debug] QUERY OK source="sources" db=0.1ms idle=6.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 21:24:24.795 [info] Sent 200 in 29ms 21:24:38.009 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:25:00.982 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:25:08.011 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:25:38.013 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:26:00.983 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:26:08.015 [info] {"source":"oban","duration":639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:26:38.016 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:27:00.984 [info] {"source":"oban","duration":164,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:27:08.017 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:27:38.018 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:28:00.985 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:28:08.020 [info] {"source":"oban","duration":672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:28:38.021 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:29:00.986 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:29:08.022 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:29:38.024 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:30:00.987 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:30:08.025 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:30:38.026 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:31:00.988 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:31:08.028 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:31:38.030 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:32:00.989 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:32:04.852 [info] GET / 21:32:04.852 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 21:32:04.852 [debug] QUERY OK source="settings" db=0.2ms idle=1067.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:32:04.853 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1068.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 21:32:04.853 [debug] QUERY OK source="sources" db=0.0ms idle=1068.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 21:32:04.855 [debug] QUERY OK source="media_items" db=2.0ms idle=708.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 21:32:04.860 [debug] QUERY OK source="media_items" db=4.6ms idle=70.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 21:32:04.860 [debug] QUERY OK source="settings" db=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 [] 21:32:04.861 [debug] QUERY OK source="settings" db=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 [] 21:32:04.861 [debug] QUERY OK source="settings" db=0.1ms 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 [] 21:32:04.862 [debug] QUERY OK source="tasks" db=0.2ms idle=6.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"] 21:32:04.863 [debug] QUERY OK source="media_items" db=1.2ms idle=2.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)) [] 21:32:04.864 [debug] QUERY OK source="media_items" db=0.3ms idle=3.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 21:32:04.865 [debug] QUERY OK source="sources" db=0.1ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 21:32:04.867 [debug] QUERY OK source="media_items" db=2.2ms idle=4.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:32:04.869 [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 INNER JOIN "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] 21:32:04.870 [debug] QUERY OK source="sources" db=0.2ms idle=5.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 (?,?)) [7, 3] 21:32:04.870 [info] Sent 200 in 18ms 21:32:05.711 [info] GET / 21:32:05.711 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 21:32:05.711 [debug] QUERY OK source="settings" db=0.1ms idle=846.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:32:05.712 [debug] QUERY OK source="media_profiles" db=0.0ms idle=844.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 21:32:05.712 [debug] QUERY OK source="sources" db=0.0ms idle=842.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 21:32:05.714 [debug] QUERY OK source="media_items" db=2.1ms idle=842.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 21:32:05.715 [debug] QUERY OK source="media_items" db=1.0ms idle=569.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 21:32:05.715 [debug] QUERY OK source="settings" db=0.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 [] 21:32:05.716 [debug] QUERY OK source="settings" db=0.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 [] 21:32:05.716 [debug] QUERY OK source="settings" db=0.0ms 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 [] 21:32:05.717 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 21:32:05.718 [debug] QUERY OK source="media_items" db=0.8ms idle=1.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)) [] 21:32:05.718 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 21:32:05.718 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 21:32:05.721 [debug] QUERY OK source="media_items" db=2.1ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:32:05.722 [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 INNER JOIN "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] 21:32:05.723 [debug] QUERY OK source="sources" db=0.1ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 21:32:05.724 [info] Sent 200 in 12ms 21:32:08.032 [info] {"source":"oban","duration":1015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:32:38.034 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:33:00.990 [info] {"source":"oban","duration":164,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:33:08.036 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:33:38.038 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:34:00.991 [info] {"source":"oban","duration":280,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:34:08.040 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:34:38.041 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:35:00.992 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:35:08.042 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:35:38.044 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:36:00.993 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:36:08.046 [info] {"source":"oban","duration":933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:36:38.048 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:37:00.994 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:37:08.050 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:37:38.052 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:38:00.995 [info] {"source":"oban","duration":171,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:38:08.054 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:38:38.056 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:39:00.996 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:39:08.058 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:39:38.059 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:40:00.997 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:40:08.061 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:40:38.062 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:41:00.998 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:41:08.063 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:41:38.064 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:42:00.999 [info] {"source":"oban","duration":259,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:42:08.066 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:42:38.068 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:43:01.000 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:43:08.070 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:43:38.072 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:44:00.001 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:44:08.073 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:44:38.075 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:45:00.002 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:45:08.076 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:45:38.078 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:46:00.003 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:46:08.079 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:46:38.081 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:47:00.004 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:47:08.083 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:47:38.084 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:48:00.005 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:48:08.086 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:48:38.087 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:49:00.006 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:49:08.088 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:49:38.090 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:50:00.007 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:50:08.091 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:50:38.092 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:51:00.008 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:51:08.094 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:51:38.096 [info] {"source":"oban","duration":617,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:52:00.009 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:52:08.097 [info] {"source":"oban","duration":1057,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:52:38.099 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:53:00.010 [info] {"source":"oban","duration":365,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:53:08.100 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:53:38.101 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:54:00.011 [info] {"source":"oban","duration":164,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:54:08.102 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:54:38.104 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:55:00.012 [info] {"source":"oban","duration":171,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:55:08.106 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:55:38.108 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:56:00.013 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:56:08.110 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:56:38.112 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:57:00.014 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:57:08.113 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:57:38.114 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:58:00.015 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:58:08.116 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:58:38.117 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:59:00.016 [info] {"source":"oban","duration":273,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 21:59:08.118 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:59:38.120 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:00:00.017 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:00:08.121 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:00:38.122 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:01:00.018 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:01:08.124 [info] {"source":"oban","duration":603,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:01:22.092 [info] {"args":{"id":13649},"id":16322,"meta":{},"system_time":1792274482092693104,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:01:22.094 [debug] QUERY OK source="media_items" db=1.5ms idle=164.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" = ?) [13649] 22:01:22.094 [info] User scripts lifecyle file either not present or is empty. Skipping. 22:01:22.096 [debug] QUERY OK source="sources" db=1.3ms idle=166.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 22:01:22.097 [debug] QUERY OK source="media_profiles" db=1.3ms idle=167.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] 22:01:22.100 [debug] QUERY OK source="media_items" db=1.9ms idle=15.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 [13649] 22:01:22.184 [debug] QUERY OK source="media_metadata" db=0.1ms idle=91.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" = ?) [13649] 22:01:22.184 [debug] QUERY OK source="media_profiles" db=0.1ms idle=89.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] 22:01:22.185 [debug] QUERY OK source="settings" db=0.1ms idle=88.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:01:22.185 [debug] QUERY OK source="settings" db=0.1ms idle=87.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:01:22.185 [debug] Running yt-dlp command for action: get_downloadable_status 22:01:22.186 [debug] QUERY OK source="settings" db=0.0ms idle=85.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:01:22.186 [debug] QUERY OK source="settings" db=0.0ms 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 [] 22:01:22.186 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:01:22.186 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/38/75/387552ff587ddbebd3f7869c4a5e69c081c4f096e772d2e0507e76bc5be2624f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 22:01:23.656 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=SPSs5LIO3Ps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/38/75/387552ff587ddbebd3f7869c4a5e69c081c4f096e772d2e0507e76bc5be2624f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] SPSs5LIO3Ps: This video is unavailable 22:01:23.656 [error] yt-dlp download error for media item #13649: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] SPSs5LIO3Ps: This video is unavailable\n" 22:01:23.657 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13649},"id":16322,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1564006,"event":"job:exception","queue_time":720813,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:01:38.126 [info] {"source":"oban","duration":1743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:02:00.019 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:02:08.129 [info] {"source":"oban","duration":1196,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:02:38.130 [info] {"source":"oban","duration":990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:03:00.020 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:03:08.132 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:03:38.133 [info] {"source":"oban","duration":985,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:04:00.021 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:04:08.135 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:04:38.136 [info] {"source":"oban","duration":1032,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:05:00.022 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:05:08.138 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:05:38.140 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:06:00.023 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:06:08.142 [info] {"source":"oban","duration":1282,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:06:38.143 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:07:00.024 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:07:08.144 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:07:38.146 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:08:00.025 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:08:08.147 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:08:38.149 [info] {"source":"oban","duration":591,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:09:00.026 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:09:08.150 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:09:38.151 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:10:00.027 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:10:08.152 [info] {"source":"oban","duration":991,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:10:20.645 [info] {"args":{"id":13717},"id":16323,"meta":{},"system_time":1792275020645655430,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:10:20.646 [debug] QUERY OK source="media_items" db=0.3ms idle=716.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" = ?) [13717] 22:10:20.646 [info] User scripts lifecyle file either not present or is empty. Skipping. 22:10:20.646 [debug] QUERY OK source="sources" db=0.1ms idle=717.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 22:10:20.647 [debug] QUERY OK source="media_profiles" db=0.2ms idle=717.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] 22:10:20.647 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [13717] 22:10:20.688 [debug] QUERY OK source="media_metadata" db=0.1ms idle=42.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" = ?) [13717] 22:10:20.688 [debug] QUERY OK source="media_profiles" db=0.2ms idle=42.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 22:10:20.688 [debug] QUERY OK source="settings" db=0.0ms idle=42.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:10:20.689 [debug] QUERY OK source="settings" db=0.0ms idle=41.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:10:20.689 [debug] Running yt-dlp command for action: get_downloadable_status 22:10:20.730 [debug] QUERY OK source="settings" db=0.1ms idle=82.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:10:20.730 [debug] QUERY OK source="settings" db=0.1ms idle=42.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:10:20.730 [debug] QUERY OK source="settings" db=0.0ms idle=41.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:10:20.730 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/57/6b/576ba73ea47f0f2417be81154618b3ac2b8a44a2fd712776d0d0821b26785336.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 22:10:22.075 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T7fktIR7eGw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/57/6b/576ba73ea47f0f2417be81154618b3ac2b8a44a2fd712776d0d0821b26785336.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] T7fktIR7eGw: This video is unavailable 22:10:22.076 [error] yt-dlp download error for media item #13717: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] T7fktIR7eGw: This video is unavailable\n" 22:10:22.076 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":13717},"id":16323,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1430530,"event":"job:exception","queue_time":822148,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:10:38.154 [info] {"source":"oban","duration":1128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:11:00.028 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:11:08.156 [info] {"source":"oban","duration":940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:11:38.158 [info] {"source":"oban","duration":910,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:12:00.029 [info] {"source":"oban","duration":163,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:12:08.160 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:12:38.162 [info] {"source":"oban","duration":1128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:13:00.030 [info] {"source":"oban","duration":176,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:13:08.164 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:13:38.166 [info] {"source":"oban","duration":1363,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:14:00.031 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:14:08.167 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:14:38.168 [info] {"source":"oban","duration":634,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:15:00.032 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:15:08.169 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:15:38.170 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:16:00.033 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:16:08.171 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:16:38.173 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:17:00.034 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:17:08.175 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:17:38.177 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:18:00.035 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:18:08.178 [info] {"source":"oban","duration":636,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:18:38.179 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:19:00.036 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:19:08.181 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:19:38.183 [info] {"source":"oban","duration":967,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:20:00.037 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:20:08.185 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:20:38.187 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:21:00.038 [info] {"source":"oban","duration":296,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:21:08.188 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:21:38.189 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:22:00.039 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:22:08.191 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:22:10.378 [info] {"args":{"id":5378},"id":16321,"meta":{},"system_time":1792275730378040073,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:22:10.378 [debug] QUERY OK source="media_items" db=0.2ms idle=449.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" = ?) [5378] 22:22:10.378 [info] User scripts lifecyle file either not present or is empty. Skipping. 22:22:10.379 [debug] QUERY OK source="sources" db=0.1ms idle=449.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 22:22:10.379 [debug] QUERY OK source="media_profiles" db=0.1ms idle=450.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] 22:22:10.379 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [5378] 22:22:10.433 [debug] QUERY OK source="media_metadata" db=0.1ms idle=54.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" = ?) [5378] 22:22:10.433 [debug] QUERY OK source="media_profiles" db=0.1ms idle=54.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] 22:22:10.433 [debug] QUERY OK source="settings" db=0.0ms idle=54.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:22:10.433 [debug] QUERY OK source="settings" db=0.0ms idle=54.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:22:10.433 [debug] Running yt-dlp command for action: get_downloadable_status 22:22:10.486 [debug] QUERY OK source="settings" db=0.2ms idle=106.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:22:10.486 [debug] QUERY OK source="settings" db=0.1ms idle=53.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:22:10.486 [debug] QUERY OK source="settings" db=0.0ms idle=53.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:22:10.486 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/18/4e1834dd99611421300fe7b6a04db0bc3043e3e8fe52388a21bccf169b6753cc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 22:22:11.892 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=m4X0DSoPzRg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/18/4e1834dd99611421300fe7b6a04db0bc3043e3e8fe52388a21bccf169b6753cc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] m4X0DSoPzRg: This video is unavailable 22:22:11.892 [error] yt-dlp download error for media item #5378: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] m4X0DSoPzRg: This video is unavailable\n" 22:22:11.893 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":5378},"id":16321,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1514852,"event":"job:exception","queue_time":782021,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:22:38.194 [info] {"source":"oban","duration":1155,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:23:00.040 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:23:08.195 [info] {"source":"oban","duration":632,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:23:38.196 [info] {"source":"oban","duration":994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:24:00.041 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:24:08.198 [info] {"source":"oban","duration":1080,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:24:38.200 [info] {"source":"oban","duration":1040,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:25:00.042 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:25:08.202 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:25:38.203 [info] {"source":"oban","duration":643,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:25:49.613 [info] {"args":{"id":37712},"id":16324,"meta":{},"system_time":1792275949613048368,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:25:49.613 [debug] QUERY OK source="media_items" db=0.2ms idle=1684.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" = ?) [37712] 22:25:49.613 [info] User scripts lifecyle file either not present or is empty. Skipping. 22:25:49.614 [debug] QUERY OK source="sources" db=0.2ms idle=1684.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 22:25:49.614 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1009.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] 22:25:49.614 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [37712] 22:25:49.692 [debug] QUERY OK source="media_metadata" db=0.1ms idle=78.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" = ?) [37712] 22:25:49.692 [debug] QUERY OK source="media_profiles" db=0.1ms idle=78.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] 22:25:49.692 [debug] QUERY OK source="settings" db=0.1ms idle=78.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:25:49.693 [debug] QUERY OK source="settings" db=0.0ms idle=78.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:25:49.693 [debug] Running yt-dlp command for action: get_downloadable_status 22:25:49.759 [debug] QUERY OK source="settings" db=0.1ms idle=144.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:25:49.759 [debug] QUERY OK source="settings" db=0.0ms idle=67.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:25:49.759 [debug] QUERY OK source="settings" db=0.1ms 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 [] 22:25:49.759 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7d/b1/7db1fe23a0675439643d5de27d1f4dc69390be218769b3962ee3ee657078ac8b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 22:25:51.514 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=395uH-pf_lI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7d/b1/7db1fe23a0675439643d5de27d1f4dc69390be218769b3962ee3ee657078ac8b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks. 22:25:51.515 [error] yt-dlp download error for media item #37712: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 395uH-pf_lI: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 22:25:51.515 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":37712},"id":16324,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1902173,"event":"job:exception","queue_time":708243,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:26:00.043 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:26:08.205 [info] {"source":"oban","duration":1345,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:26:38.207 [info] {"source":"oban","duration":1272,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:27:00.044 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:27:08.208 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:27:38.210 [info] {"source":"oban","duration":993,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:28:00.045 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:28:08.212 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:28:38.213 [info] {"source":"oban","duration":1013,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:29:00.046 [info] {"source":"oban","duration":387,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:29:08.215 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:29:38.216 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:30:00.047 [info] {"source":"oban","duration":171,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:30:08.218 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:30:38.220 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:31:00.048 [info] {"source":"oban","duration":259,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:31:08.221 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:31:38.222 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:32:00.049 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:32:08.223 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:32:38.224 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:33:00.050 [info] {"source":"oban","duration":110,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:33:08.225 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:33:38.227 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:34:00.051 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:34:08.228 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:34:38.229 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:35:00.052 [info] {"source":"oban","duration":250,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:35:08.230 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:35:38.232 [info] {"source":"oban","duration":651,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:36:00.053 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:36:08.233 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:36:38.294 [info] {"source":"oban","duration":1876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:37:00.054 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:37:08.296 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:37:38.298 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:38:00.055 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:38:08.299 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:38:14.968 [info] GET / 22:38:14.968 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 22:38:14.968 [debug] QUERY OK source="settings" db=0.1ms idle=1039.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:38:14.969 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1040.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 22:38:14.969 [debug] QUERY OK source="sources" db=0.1ms idle=1040.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 22:38:14.977 [debug] QUERY OK source="media_items" db=8.5ms idle=1040.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 22:38:14.980 [debug] QUERY OK source="media_items" db=2.2ms idle=581.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 22:38:14.980 [debug] QUERY OK source="settings" db=0.0ms 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 [] 22:38:14.981 [debug] QUERY OK source="settings" db=0.0ms 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 [] 22:38:14.981 [debug] QUERY OK source="settings" db=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 [] 22:38:14.982 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 22:38:14.983 [debug] QUERY OK source="media_items" db=0.9ms idle=1.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)) [] 22:38:14.983 [debug] QUERY OK source="media_items" db=0.2ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 22:38:14.983 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 22:38:14.991 [debug] QUERY OK source="media_items" db=6.9ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:38:14.992 [debug] QUERY OK source="media_items" db=0.9ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 22:38:14.992 [debug] QUERY OK source="sources" db=0.0ms 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 (?,?)) [7, 3] 22:38:14.993 [info] Sent 200 in 25ms 22:38:15.837 [info] GET / 22:38:15.837 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 22:38:15.837 [debug] QUERY OK source="settings" db=0.1ms idle=853.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:38:15.838 [debug] QUERY OK source="media_profiles" db=0.1ms idle=846.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 22:38:15.838 [debug] QUERY OK source="sources" db=0.1ms idle=845.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 22:38:15.845 [debug] QUERY OK source="media_items" db=7.0ms idle=845.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 22:38:15.847 [debug] QUERY OK source="media_items" db=1.7ms idle=448.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 22:38:15.847 [debug] QUERY OK source="settings" db=0.1ms idle=9.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:38:15.848 [debug] QUERY OK source="settings" db=0.0ms 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 [] 22:38:15.848 [debug] QUERY OK source="settings" db=0.0ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:38:15.849 [debug] QUERY OK source="tasks" db=0.2ms idle=3.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"] 22:38:15.850 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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)) [] 22:38:15.850 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 22:38:15.851 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?,?)) [6, 4, 7] 22:38:15.854 [debug] QUERY OK source="media_items" db=1.9ms idle=3.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"))) [] 22:38:15.855 [debug] QUERY OK source="media_items" db=0.9ms idle=5.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 22:38:15.855 [debug] QUERY OK source="sources" db=0.1ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 22:38:15.856 [info] Sent 200 in 19ms 22:38:38.300 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:39:00.056 [info] {"source":"oban","duration":185,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:39:08.301 [info] {"source":"oban","duration":852,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:39:38.303 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:40:00.057 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:40:08.304 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:40:38.306 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:41:00.058 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:41:08.308 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:41:38.309 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:41:52.624 [info] {"args":{"id":1922},"id":16320,"meta":{},"system_time":1792276912624651567,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:41:52.625 [debug] QUERY OK source="media_items" db=0.3ms idle=694.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [1922] 22:41:52.625 [info] User scripts lifecyle file either not present or is empty. Skipping. 22:41:52.626 [debug] QUERY OK source="sources" db=0.9ms idle=694.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 22:41:52.627 [debug] QUERY OK source="media_profiles" db=0.9ms idle=695.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] 22:41:52.628 [debug] QUERY OK source="media_items" db=0.4ms idle=11.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1922] 22:41:52.662 [debug] QUERY OK source="media_metadata" db=0.1ms idle=38.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" = ?) [1922] 22:41:52.663 [debug] QUERY OK source="media_profiles" db=0.3ms idle=37.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] 22:41:52.663 [debug] QUERY OK source="settings" db=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 [] 22:41:52.663 [debug] QUERY OK source="settings" db=0.0ms 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 [] 22:41:52.664 [debug] Running yt-dlp command for action: get_downloadable_status 22:41:52.706 [debug] QUERY OK source="settings" db=0.1ms idle=77.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:41:52.706 [debug] QUERY OK source="settings" db=0.0ms idle=43.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:41:52.706 [debug] QUERY OK source="settings" db=0.0ms idle=43.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:41:52.707 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3f/84/3f849135b1c80cf671ac8d09eb539846d282049bea6d4c9757b7cde88c0f1b5b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 22:41:54.315 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3E-IVvOV8As --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3f/84/3f849135b1c80cf671ac8d09eb539846d282049bea6d4c9757b7cde88c0f1b5b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks. 22:41:54.315 [error] yt-dlp download error for media item #1922: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3E-IVvOV8As: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 22:41:54.316 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":1922},"id":16320,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1691464,"event":"job:exception","queue_time":401532,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:42:00.059 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:42:08.311 [info] {"source":"oban","duration":1324,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:42:38.313 [info] {"source":"oban","duration":1103,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:43:00.060 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:43:08.314 [info] {"source":"oban","duration":1014,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:43:38.316 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:44:00.061 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:44:08.318 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:44:38.319 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:45:00.062 [info] {"source":"oban","duration":256,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:45:08.320 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:45:38.321 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:46:00.063 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:46:08.323 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:46:38.325 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:47:00.064 [info] {"source":"oban","duration":176,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:47:08.327 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:47:38.330 [info] {"source":"oban","duration":1221,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:48:00.065 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:48:08.331 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:48:38.333 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:49:00.066 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:49:08.335 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:49:38.336 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:50:00.067 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:50:08.337 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:50:38.338 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:51:00.068 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:51:08.339 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:51:38.340 [info] {"source":"oban","duration":930,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:52:00.069 [info] {"source":"oban","duration":294,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:52:08.342 [info] {"source":"oban","duration":893,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:52:38.344 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:53:00.070 [info] {"source":"oban","duration":286,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:53:08.346 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:53:38.347 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:54:00.071 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:54:08.348 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:54:38.350 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:55:00.072 [info] {"source":"oban","duration":173,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:55:08.352 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:55:38.354 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:56:00.073 [info] {"source":"oban","duration":255,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:56:08.356 [info] {"source":"oban","duration":808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:56:38.358 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:57:00.074 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:57:08.360 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:57:38.361 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:58:00.075 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:58:08.363 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:58:38.365 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:59:00.076 [info] {"source":"oban","duration":261,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 22:59:08.367 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:59:38.368 [info] {"source":"oban","duration":650,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:00:00.077 [info] {"source":"oban","duration":245,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:00:08.369 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:00:38.371 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:01:00.078 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:01:08.372 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:01:38.373 [info] {"source":"oban","duration":731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:02:00.079 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:02:08.374 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:02:38.376 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:03:00.080 [info] {"source":"oban","duration":161,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:03:08.378 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:03:38.380 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:04:00.081 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:04:08.382 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:04:38.384 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:05:00.082 [info] {"source":"oban","duration":282,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:05:08.386 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:05:38.388 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:06:00.083 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:06:08.389 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:06:38.391 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:07:00.084 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:07:08.393 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:07:38.395 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:08:00.085 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:08:08.397 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:08:38.398 [info] {"source":"oban","duration":690,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:09:00.086 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:09:08.400 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:09:38.401 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:10:00.087 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:10:08.402 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:10:21.539 [info] GET /sources/7/force_redownload 23:10:21.540 [debug] QUERY OK source="settings" db=0.1ms idle=1608.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 23:10:21.540 [debug] QUERY OK source="settings" db=0.0ms idle=1609.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 23:10:21.540 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 23:10:21.540 [error] #PID<0.88804.0> running PinchflatWeb.Endpoint (connection #PID<0.88803.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/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/7/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.88803.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54684}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "accept-language" => "zh-cn,zh-tw", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)", "x-forwarded-for" => "116.179.32.173", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "116.179.32.173" }, 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.moozuk.net", method: "GET", owner: #PID<0.88804.0>, params: %{}, path_info: ["sources", "7", "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 => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"accept-language", "zh-cn,zh-tw"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"}, {"x-forwarded-for", "116.179.32.173"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "116.179.32.173"} ], request_path: "/sources/7/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9z6Q9fsj7Do-8ABUwC"} ], 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.88803.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54684}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "accept-language" => "zh-cn,zh-tw", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)", "x-forwarded-for" => "116.179.32.173", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "116.179.32.173" }, 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/7/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.88803.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54684}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "accept-language" => "zh-cn,zh-tw", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)", "x-forwarded-for" => "116.179.32.173", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "116.179.32.173" }, 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.moozuk.net", method: "GET", owner: #PID<0.88804.0>, params: %{}, path_info: ["sources", "7", "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 => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"accept-language", "zh-cn,zh-tw"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"}, {"x-forwarded-for", "116.179.32.173"}, {"x-forwarded-proto", "ht (truncated) 23:10:21.679 [info] GET /sources/7/force_redownload 23:10:21.679 [debug] QUERY OK source="settings" db=0.1ms idle=1748.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 23:10:21.679 [debug] QUERY OK source="settings" db=0.0ms idle=1159.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 23:10:21.679 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 23:10:21.680 [error] #PID<0.88806.0> running PinchflatWeb.Endpoint (connection #PID<0.88805.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/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/7/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.88805.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54694}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "accept-language" => "zh-cn,zh-tw", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36", "x-forwarded-for" => "119.249.100.175", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "119.249.100.175" }, 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.moozuk.net", method: "GET", owner: #PID<0.88806.0>, params: %{}, path_info: ["sources", "7", "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 => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"accept-language", "zh-cn,zh-tw"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"}, {"x-forwarded-for", "119.249.100.175"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "119.249.100.175"} ], request_path: "/sources/7/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9z6Re1H0GGc9AABUwi"} ], 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.88805.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54694}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "accept-language" => "zh-cn,zh-tw", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36", "x-forwarded-for" => "119.249.100.175", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "119.249.100.175" }, 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/7/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.88805.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54694}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "accept-language" => "zh-cn,zh-tw", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36", "x-forwarded-for" => "119.249.100.175", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "119.249.100.175" }, 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.moozuk.net", method: "GET", owner: #PID<0.88806.0>, params: %{}, path_info: ["sources", "7", "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 => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"accept-language", "zh-cn,zh-tw"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KH (truncated) 23:10:21.835 [info] GET /sources/7/force_redownload 23:10:21.836 [debug] QUERY OK source="settings" db=0.2ms 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 [] 23:10:21.836 [debug] QUERY OK source="settings" db=0.0ms idle=296.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 23:10:21.836 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 23:10:21.836 [error] #PID<0.88808.0> running PinchflatWeb.Endpoint (connection #PID<0.88807.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/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/7/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.88807.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54696}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "accept-language" => "zh-cn,zh-tw", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36", "x-forwarded-for" => "111.225.214.164", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "111.225.214.164" }, 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.moozuk.net", method: "GET", owner: #PID<0.88808.0>, params: %{}, path_info: ["sources", "7", "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 => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"accept-language", "zh-cn,zh-tw"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"}, {"x-forwarded-for", "111.225.214.164"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "111.225.214.164"} ], request_path: "/sources/7/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9z6SEK_8ufFsMABUxC"} ], 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.88807.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54696}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "accept-language" => "zh-cn,zh-tw", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36", "x-forwarded-for" => "111.225.214.164", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "111.225.214.164" }, 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/7/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.88807.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54696}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "accept-language" => "zh-cn,zh-tw", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36", "x-forwarded-for" => "111.225.214.164", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "111.225.214.164" }, 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.moozuk.net", method: "GET", owner: #PID<0.88808.0>, params: %{}, path_info: ["sources", "7", "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 => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"accept-language", "zh-cn,zh-tw"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KH (truncated) 23:10:38.403 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:11:00.088 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:11:08.404 [info] {"source":"oban","duration":663,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:11:38.405 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:12:00.089 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:12:08.406 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:12:38.407 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:13:00.090 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:13:08.408 [info] {"source":"oban","duration":624,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:13:38.409 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:14:00.091 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:14:08.410 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:14:38.412 [info] {"source":"oban","duration":1023,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:15:00.092 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:15:08.414 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:15:38.415 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:16:00.093 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:16:08.416 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:16:38.417 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:17:00.094 [info] {"source":"oban","duration":274,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:17:08.418 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:17:38.420 [info] {"source":"oban","duration":654,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:18:00.095 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:18:08.421 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:18:38.423 [info] {"source":"oban","duration":674,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:19:00.096 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:19:08.424 [info] {"source":"oban","duration":813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:19:38.426 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:20:00.097 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:20:08.428 [info] {"source":"oban","duration":820,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:20:38.430 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:21:00.098 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:21:08.431 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:21:38.432 [info] {"source":"oban","duration":1012,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:22:00.099 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:22:08.434 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:22:38.436 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:23:00.100 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:23:08.437 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:23:38.439 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:24:00.101 [info] {"source":"oban","duration":229,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:24:08.441 [info] {"source":"oban","duration":609,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:24:38.442 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:25:00.102 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:25:08.444 [info] {"source":"oban","duration":402,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:25:38.445 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:26:00.103 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:26:08.446 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:26:38.447 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:27:00.104 [info] {"source":"oban","duration":260,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:27:08.449 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:27:38.451 [info] {"source":"oban","duration":908,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:28:00.105 [info] {"source":"oban","duration":293,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:28:08.453 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:28:38.455 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:29:00.106 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:29:08.457 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:29:38.459 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:30:00.107 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:30:08.460 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:30:38.462 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:31:00.108 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:31:08.463 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:31:38.464 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:32:00.109 [info] {"source":"oban","duration":251,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:32:08.465 [info] {"source":"oban","duration":820,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:32:38.467 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:33:00.110 [info] {"source":"oban","duration":159,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:33:08.469 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:33:38.470 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:34:00.111 [info] {"source":"oban","duration":232,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:34:08.471 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:34:38.473 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:35:00.112 [info] {"source":"oban","duration":165,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:35:08.475 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:35:38.476 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:36:00.113 [info] {"source":"oban","duration":176,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:36:08.477 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:36:38.478 [info] {"source":"oban","duration":894,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:37:00.114 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:37:08.480 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:37:38.481 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:38:00.115 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:38:08.483 [info] {"source":"oban","duration":660,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:38:38.484 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:39:00.116 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:39:08.486 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:39:38.488 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:40:00.117 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:40:08.489 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:40:38.491 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:41:00.118 [info] {"source":"oban","duration":310,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:41:08.492 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:41:38.494 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:42:00.119 [info] {"source":"oban","duration":249,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:42:08.496 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:42:38.498 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:43:00.120 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:43:08.500 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:43:38.502 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:44:00.121 [info] {"source":"oban","duration":171,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:44:08.503 [info] {"source":"oban","duration":813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:44:38.505 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:45:00.122 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:45:08.506 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:45:38.507 [info] {"source":"oban","duration":602,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:46:00.123 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:46:08.508 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:46:38.509 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:47:00.124 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:47:08.510 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:47:38.512 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:48:00.125 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:48:08.513 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:48:38.515 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:49:00.126 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:49:08.517 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:49:38.519 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:50:00.127 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:50:08.520 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:50:38.522 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:51:00.128 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:51:08.524 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:51:38.526 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:52:00.129 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:52:08.528 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:52:38.530 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:53:00.130 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:53:08.532 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:53:38.533 [info] {"source":"oban","duration":690,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:54:00.131 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:54:08.534 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:54:38.535 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:55:00.132 [info] {"source":"oban","duration":248,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:55:08.536 [info] {"source":"oban","duration":705,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:55:38.537 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:56:00.133 [info] {"source":"oban","duration":295,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:56:08.539 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:56:38.540 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:57:00.134 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:57:08.541 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:57:38.543 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:58:00.135 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:58:08.545 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:58:38.546 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:59:00.136 [info] {"source":"oban","duration":257,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 23:59:08.548 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:59:38.550 [info] {"source":"oban","duration":553,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:00:00.137 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:00:08.552 [info] {"source":"oban","duration":1939,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":30} 00:00:38.555 [info] {"source":"oban","duration":1384,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:01:00.138 [info] {"source":"oban","duration":289,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:01:08.556 [info] {"source":"oban","duration":659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:01:38.558 [info] {"source":"oban","duration":1119,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:02:00.139 [info] {"source":"oban","duration":278,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:02:08.559 [info] {"source":"oban","duration":947,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:02:38.561 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:03:00.140 [info] {"source":"oban","duration":256,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:03:08.563 [info] {"source":"oban","duration":643,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:03:38.565 [info] {"source":"oban","duration":1087,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:04:00.141 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:04:08.566 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:04:38.568 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:05:00.142 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:05:08.570 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:05:38.571 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:06:00.143 [info] {"source":"oban","duration":184,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:06:08.573 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:06:38.574 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:07:00.144 [info] {"source":"oban","duration":257,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:07:08.576 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:07:38.578 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:08:00.145 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:08:08.580 [info] {"source":"oban","duration":595,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:08:38.581 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:09:00.146 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:09:08.583 [info] {"source":"oban","duration":621,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:09:38.584 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:10:00.147 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:10:08.585 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:10:38.586 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:11:00.148 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:11:08.588 [info] {"source":"oban","duration":577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:11:38.589 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:12:00.149 [info] {"source":"oban","duration":178,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:12:08.591 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:12:38.592 [info] {"source":"oban","duration":808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:13:00.150 [info] {"source":"oban","duration":175,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:13:08.594 [info] {"source":"oban","duration":818,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:13:38.596 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:14:00.151 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:14:08.598 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:14:38.600 [info] {"source":"oban","duration":610,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:15:00.152 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:15:08.601 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:15:38.603 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:16:00.153 [info] {"source":"oban","duration":226,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:16:08.604 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:16:38.606 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:17:00.154 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:17:08.607 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:17:38.609 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:18:00.155 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:18:08.611 [info] {"source":"oban","duration":705,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:18:38.612 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:19:00.156 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:19:08.613 [info] {"source":"oban","duration":659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:19:38.614 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:20:00.157 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:20:08.616 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:20:38.618 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:21:00.158 [info] {"source":"oban","duration":234,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:21:08.619 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:21:38.621 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:22:00.159 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:22:08.622 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:22:38.624 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:23:00.160 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:23:08.626 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:23:38.628 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:24:00.161 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:24:08.629 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:24:38.630 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:25:00.162 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:25:08.631 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:25:38.632 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:26:00.163 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:26:08.633 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:26:38.635 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:27:00.164 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:27:08.637 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:27:38.638 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:28:00.165 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:28:08.640 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:28:38.641 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:29:00.166 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:29:08.642 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:29:38.644 [info] {"source":"oban","duration":634,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:30:00.167 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:30:08.645 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:30:38.646 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:31:00.168 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:31:08.648 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:31:38.650 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:32:00.169 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:32:08.652 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:32:38.654 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:33:00.170 [info] {"source":"oban","duration":397,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:33:08.655 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:33:38.657 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:34:00.171 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:34:08.659 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:34:38.660 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:35:00.172 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:35:08.661 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:35:38.663 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:36:00.173 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:36:08.665 [info] {"source":"oban","duration":626,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:36:38.666 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:37:00.174 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:37:08.668 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:37:38.670 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:38:00.175 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:38:08.672 [info] {"source":"oban","duration":650,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:38:38.673 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:39:00.176 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:39:08.675 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:39:38.677 [info] {"source":"oban","duration":852,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:40:00.177 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:40:08.679 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:40:38.680 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:41:00.178 [info] {"source":"oban","duration":221,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:41:08.682 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:41:38.683 [info] {"source":"oban","duration":648,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:42:00.179 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:42:08.684 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:42:38.685 [info] {"source":"oban","duration":670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:43:00.180 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:43:08.686 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:43:38.687 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:44:00.181 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:44:08.688 [info] {"source":"oban","duration":640,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:44:38.689 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:45:00.182 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:45:08.691 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:45:38.693 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:46:00.183 [info] {"source":"oban","duration":236,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:46:08.695 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:46:38.697 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:47:00.184 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:47:08.699 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:47:38.700 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:48:00.185 [info] {"source":"oban","duration":186,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:48:08.701 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:48:38.703 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:49:00.186 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:49:08.704 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:49:38.706 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:50:00.187 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:50:08.708 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:50:38.710 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:51:00.188 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:51:08.712 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:51:38.714 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:52:00.189 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:52:08.716 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:52:38.717 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:53:00.190 [info] {"source":"oban","duration":163,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:53:08.719 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:53:38.721 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:54:00.191 [info] {"source":"oban","duration":209,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:54:08.722 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:54:38.724 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:55:00.192 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:55:08.726 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:55:38.728 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:56:00.193 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:56:08.730 [info] {"source":"oban","duration":613,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:56:38.731 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:57:00.194 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:57:08.733 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:57:38.735 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:58:00.195 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:58:08.736 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:58:38.738 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:59:00.196 [info] {"source":"oban","duration":250,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 00:59:08.740 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:59:38.742 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:00:00.198 [info] {"source":"oban","duration":1266,"event":"plugin:stop","jobs":[16335],"plugin":"Oban.Plugins.Cron"} 01:00:00.204 [info] {"args":{},"id":16335,"meta":{"cron":true,"cron_expr":"0 1 * * *","cron_tz":"Etc/UTC"},"system_time":1792285200204600676,"max_attempts":20,"queue":"local_data","worker":"Pinchflat.Downloading.MediaRetentionWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","local_data"]} 01:00:00.215 [debug] QUERY OK source="media_items" db=10.5ms idle=175.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" WHERE ((NOT (m0."media_filepath" IS NULL) AND IFNULL(retention_period_days, 0) > 0 AND DATETIME(media_downloaded_at, '+' || retention_period_days || ' day') < DATETIME('now') ) AND NOT (m0."prevent_culling" = 1)) [] 01:00:00.215 [info] Culling 0 media items past their retention date 01:00:00.224 [debug] QUERY OK source="media_items" db=8.7ms idle=186.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" WHERE ((NOT (m0."media_filepath" IS NULL) AND NOT ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND NOT (m0."prevent_culling" = 1)) [] 01:00:00.224 [info] Deleting 0 media items that are from before the source cutoff 01:00:00.225 [info] {"args":{},"id":16335,"meta":{"cron":true,"cron_expr":"0 1 * * *","cron_tz":"Etc/UTC"},"state":"success","max_attempts":20,"queue":"local_data","worker":"Pinchflat.Downloading.MediaRetentionWorker","source":"oban","duration":20472,"event":"job:stop","queue_time":203812,"attempt":1,"tags":["media_item","local_data"]} 01:00:08.745 [info] {"source":"oban","duration":1176,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:00:38.747 [info] {"source":"oban","duration":1085,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:01:00.199 [info] {"source":"oban","duration":246,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:01:08.749 [info] {"source":"oban","duration":1120,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:01:38.750 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:02:00.200 [info] {"source":"oban","duration":253,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:02:08.752 [info] {"source":"oban","duration":672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:02:38.753 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:03:00.201 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:03:08.754 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:03:38.756 [info] {"source":"oban","duration":1144,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:04:00.202 [info] {"source":"oban","duration":279,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:04:08.757 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:04:38.759 [info] {"source":"oban","duration":1067,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:05:00.203 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:05:08.761 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:05:38.763 [info] {"source":"oban","duration":620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:06:00.204 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:06:08.764 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:06:38.766 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:07:00.205 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:07:08.768 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:07:38.770 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:08:00.206 [info] {"source":"oban","duration":279,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:08:08.772 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:08:38.774 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:09:00.207 [info] {"source":"oban","duration":159,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:09:08.776 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:09:38.778 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:10:00.208 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:10:08.779 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:10:38.780 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:11:00.209 [info] {"source":"oban","duration":221,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:11:08.781 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:11:38.782 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:12:00.210 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:12:08.783 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:12:38.785 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:13:00.211 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:13:08.787 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:13:38.788 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:14:00.212 [info] {"source":"oban","duration":250,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:14:08.789 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:14:38.790 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:15:00.213 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:15:08.791 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:15:38.792 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:16:00.214 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:16:08.793 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:16:38.794 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:17:00.215 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:17:08.796 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:17:38.797 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:18:00.216 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:18:08.799 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:18:38.801 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:19:00.217 [info] {"source":"oban","duration":247,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:19:08.803 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:19:38.804 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:20:00.218 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:20:08.806 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:20:38.807 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:21:00.219 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:21:08.809 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:21:38.810 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:22:00.220 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:22:08.812 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:22:38.813 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:23:00.221 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:23:08.815 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:23:38.816 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:24:00.222 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:24:08.818 [info] {"source":"oban","duration":912,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:24:38.820 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:25:00.223 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:25:08.821 [info] {"source":"oban","duration":769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:25:38.823 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:26:00.224 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:26:08.824 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:26:38.826 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:27:00.225 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:27:08.828 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:27:38.829 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:28:00.226 [info] {"source":"oban","duration":292,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:28:08.830 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:28:38.831 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:29:00.227 [info] {"source":"oban","duration":245,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:29:08.832 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:29:38.834 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:30:00.228 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:30:08.836 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:30:38.837 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:31:00.229 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:31:08.838 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:31:38.839 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:32:00.230 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:32:08.840 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:32:38.841 [info] {"source":"oban","duration":705,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:33:00.231 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:33:08.843 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:33:38.845 [info] {"source":"oban","duration":769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:34:00.232 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:34:08.847 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:34:38.848 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:35:00.233 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:35:08.849 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:35:38.850 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:36:00.234 [info] {"source":"oban","duration":253,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:36:08.851 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:36:38.852 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:37:00.235 [info] {"source":"oban","duration":162,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:37:08.853 [info] {"source":"oban","duration":635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:37:38.854 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:38:00.236 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:38:08.856 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:38:38.858 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:39:00.237 [info] {"source":"oban","duration":340,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:39:08.859 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:39:38.860 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:40:00.238 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:40:08.862 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:40:38.864 [info] {"source":"oban","duration":675,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:41:00.239 [info] {"source":"oban","duration":259,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:41:08.865 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:41:38.866 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:42:00.240 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:42:08.868 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:42:38.869 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:43:00.241 [info] {"source":"oban","duration":217,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:43:08.871 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:43:38.872 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:44:00.242 [info] {"source":"oban","duration":230,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:44:08.874 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:44:38.876 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:45:00.243 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:45:08.877 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:45:38.879 [info] {"source":"oban","duration":650,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:46:00.244 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:46:08.880 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:46:38.882 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:47:00.245 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:47:08.884 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:47:38.885 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:48:00.246 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:48:08.886 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:48:38.887 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:49:00.247 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:49:08.888 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:49:38.889 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:50:00.248 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:50:08.891 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:50:38.893 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:51:00.249 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:51:08.894 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:51:38.896 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:52:00.250 [info] {"source":"oban","duration":254,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:52:08.897 [info] {"source":"oban","duration":674,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:52:38.898 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:53:00.251 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:53:08.899 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:53:38.901 [info] {"source":"oban","duration":636,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:54:00.252 [info] {"source":"oban","duration":179,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:54:08.902 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:54:38.903 [info] {"source":"oban","duration":651,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:55:00.253 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:55:08.904 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:55:38.906 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:56:00.254 [info] {"source":"oban","duration":288,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:56:08.908 [info] {"source":"oban","duration":634,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:56:38.909 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:57:00.255 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:57:08.911 [info] {"source":"oban","duration":614,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:57:38.912 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:58:00.256 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:58:08.914 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:58:38.915 [info] {"source":"oban","duration":893,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:59:00.257 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 01:59:08.917 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:59:38.919 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:00:00.259 [info] {"source":"oban","duration":1874,"event":"plugin:stop","jobs":[16336],"plugin":"Oban.Plugins.Cron"} 02:00:00.265 [info] {"args":{},"id":16336,"meta":{"cron":true,"cron_expr":"0 2 * * *","cron_tz":"Etc/UTC"},"system_time":1792288800265632341,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaQualityUpgradeWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:00:00.279 [debug] QUERY OK source="media_items" db=13.0ms idle=156.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) AND NOT (m0."prevent_download" = 1)) AND NOT (NOT (m0."media_redownloaded_at" IS NULL))) AND IFNULL(redownload_delay_days, 0) > 0 AND DATE('now', '-' || redownload_delay_days || ' day') > DATE(uploaded_at) AND DATE(media_downloaded_at, '-' || redownload_delay_days || ' day') < DATE(uploaded_at) ) [] 02:00:00.279 [info] Redownloading 2 media items 02:00:00.356 [debug] QUERY OK source="tasks" db=74.6ms idle=16.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16337, 50411, ~U[2026-10-18 02:00:00Z], ~U[2026-10-18 02:00:00Z]] 02:00:00.357 [info] {"args":{},"id":16336,"meta":{"cron":true,"cron_expr":"0 2 * * *","cron_tz":"Etc/UTC"},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaQualityUpgradeWorker","source":"oban","duration":90937,"event":"job:stop","queue_time":264872,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:00:00.367 [info] {"args":{"id":50411,"quality_upgrade?":true},"id":16337,"meta":{},"system_time":1792288800366993904,"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"]} 02:00:00.367 [debug] QUERY OK source="media_items" db=0.1ms idle=86.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" = ?) [50411] 02:00:00.367 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:00:00.368 [debug] QUERY OK source="sources" db=0.1ms idle=86.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" = ?) [6] 02:00:00.416 [debug] QUERY OK source="media_metadata" db=0.1ms idle=59.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" = ?) [50411] 02:00:00.417 [debug] QUERY OK source="media_profiles" db=0.1ms idle=50.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:00:00.417 [debug] QUERY OK source="settings" db=0.1ms idle=50.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:00.418 [debug] QUERY OK source="settings" db=0.1ms idle=49.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:00.418 [debug] Running yt-dlp command for action: get_downloadable_status 02:00:00.470 [debug] QUERY OK source="settings" db=0.1ms idle=96.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:00.471 [debug] QUERY OK source="settings" db=0.0ms idle=54.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:00.471 [debug] QUERY OK source="settings" db=0.1ms idle=53.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:00.471 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v7WHgX5FR9o --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/20/76/207628054e3364eb1c5f11daedcf323ca909361f07d5d7020a2b04d102254b3f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:00:02.797 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v7WHgX5FR9o --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/20/76/207628054e3364eb1c5f11daedcf323ca909361f07d5d7020a2b04d102254b3f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 02:00:02.797 [debug] Running yt-dlp command for action: download 02:00:02.797 [debug] QUERY OK source="settings" db=0.1ms idle=687.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:02.797 [debug] QUERY OK source="settings" db=0.0ms idle=687.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:02.798 [debug] QUERY OK source="settings" db=0.0ms idle=688.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:02.798 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v7WHgX5FR9o --no-simulate --no-progress --force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/포모의 HTS 로그인2/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/포모의 HTS 로그인2/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b6/62/b662cf1716415e151a892f5950257bbf4a3710dbc184bd61feba86f19ec584a0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:00:08.922 [info] {"source":"oban","duration":1249,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:00:15.477 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v7WHgX5FR9o --no-simulate --no-progress --force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/포모의 HTS 로그인2/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/포모의 HTS 로그인2/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b6/62/b662cf1716415e151a892f5950257bbf4a3710dbc184bd61feba86f19ec584a0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one WARNING: Replacing existing file "/downloads/포모의 HTS 로그인2/2026-10-16 거래량 터진 캔들에 지지선 자동으로 넣기/거래량 터진 캔들에 지지선 자동으로 넣기 [v7WHgX5FR9o]-thumb.jpg" 02:00:15.501 [debug] Running yt-dlp command for action: download_thumbnail 02:00:15.502 [debug] QUERY OK source="settings" db=0.1ms idle=1392.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:15.502 [debug] QUERY OK source="settings" db=0.1ms idle=1392.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:15.502 [debug] QUERY OK source="settings" db=0.1ms idle=1392.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:00:15.502 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v7WHgX5FR9o --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50411/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ea/2f/ea2f5051940daea37bdcf4ef6942535f8ee14f41b013f8bb2b4243986cbfbc62.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:00:17.983 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v7WHgX5FR9o --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50411/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ea/2f/ea2f5051940daea37bdcf4ef6942535f8ee14f41b013f8bb2b4243986cbfbc62.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 02:00:17.985 [debug] QUERY OK source="media_items" db=1.1ms idle=1373.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-18 02:00:15Z], ~U[2026-10-18 02:00:17Z], 50411] 02:00:17.986 [debug] QUERY OK source="media_items" db=1.0ms idle=875.3ms UPDATE "media_items" SET "media_redownloaded_at" = ?, "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-18 02:00:17Z], 159807999, ~U[2026-10-18 02:00:17Z], 50411] 02:00:17.986 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:00:17.986 [info] {"args":{"id":50411,"quality_upgrade?":true},"id":16337,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":17619538,"event":"job:stop","queue_time":286848,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:00:38.923 [info] {"source":"oban","duration":1066,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:01:00.261 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:01:08.926 [info] {"source":"oban","duration":1201,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:01:38.927 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:02:00.262 [info] {"source":"oban","duration":213,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:02:08.928 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:02:38.931 [info] {"source":"oban","duration":1183,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:03:00.263 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:03:08.932 [info] {"source":"oban","duration":1082,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:03:38.934 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:04:00.264 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:04:08.936 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:04:38.938 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:05:00.265 [info] {"source":"oban","duration":205,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:05:08.940 [info] {"source":"oban","duration":755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:05:38.942 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:06:00.266 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:06:08.944 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:06:38.946 [info] {"source":"oban","duration":1044,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:07:00.267 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:07:08.948 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:07:38.949 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:08:00.268 [info] {"source":"oban","duration":207,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:08:08.951 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:08:38.953 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:09:00.269 [info] {"source":"oban","duration":243,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:09:08.955 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:09:38.956 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:10:00.270 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:10:08.957 [info] {"source":"oban","duration":652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:10:38.959 [info] {"source":"oban","duration":1115,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:11:00.270 [info] {"source":"oban","duration":114,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:11:08.960 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:11:38.962 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:12:00.272 [info] {"source":"oban","duration":258,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:12:08.964 [info] {"source":"oban","duration":632,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:12:38.965 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:13:00.273 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:13:08.967 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:13:38.968 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:14:00.274 [info] {"source":"oban","duration":259,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:14:08.969 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:14:38.970 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:15:00.275 [info] {"source":"oban","duration":167,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:15:08.971 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:15:38.973 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:16:00.276 [info] {"source":"oban","duration":320,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:16:08.975 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:16:38.976 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:17:00.277 [info] {"source":"oban","duration":170,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:17:08.978 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:17:38.980 [info] {"source":"oban","duration":647,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:18:00.278 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:18:08.981 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:18:38.982 [info] {"source":"oban","duration":652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:19:00.279 [info] {"source":"oban","duration":265,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:19:08.983 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:19:38.985 [info] {"source":"oban","duration":566,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:20:00.280 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:20:08.986 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:20:38.988 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:21:00.281 [info] {"source":"oban","duration":279,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:21:08.989 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:21:38.990 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:22:00.282 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:22:08.991 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:22:38.992 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:23:00.283 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:23:08.994 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:23:38.996 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:24:00.284 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:24:08.998 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:24:39.000 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:25:00.285 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:25:02.172 [info] GET / 02:25:02.172 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:25:02.172 [debug] QUERY OK source="settings" db=0.2ms idle=1683.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:25:02.173 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1683.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:25:02.173 [debug] QUERY OK source="sources" db=0.0ms idle=866.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:25:02.181 [debug] QUERY OK source="media_items" db=8.1ms idle=684.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:25:02.185 [debug] QUERY OK source="media_items" db=3.4ms idle=692.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:25:02.185 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:25:02.185 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:25:02.186 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:25:02.187 [debug] QUERY OK source="tasks" db=0.1ms idle=5.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"] 02:25:02.188 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 02:25:02.189 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 02:25:02.189 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?,?)) [6, 4, 7] 02:25:02.197 [debug] QUERY OK source="media_items" db=7.5ms idle=3.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"))) [] 02:25:02.199 [debug] QUERY OK source="media_items" db=1.1ms idle=10.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] 02:25:02.199 [debug] QUERY OK source="sources" db=0.1ms 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 (?,?)) [7, 3] 02:25:02.200 [info] Sent 200 in 28ms 02:25:03.198 [info] GET / 02:25:03.199 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:25:03.199 [debug] QUERY OK source="settings" db=0.1ms idle=1009.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:25:03.199 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1002.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:25:03.199 [debug] QUERY OK source="sources" db=0.0ms idle=1000.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:25:03.210 [debug] QUERY OK source="media_items" db=10.1ms idle=1000.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:25:03.213 [debug] QUERY OK source="media_items" db=2.8ms idle=902.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:25:03.213 [debug] QUERY OK source="settings" db=0.1ms idle=13.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:25:03.213 [debug] QUERY OK source="settings" db=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 [] 02:25:03.214 [debug] QUERY OK source="settings" db=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 [] 02:25:03.215 [debug] QUERY OK source="tasks" db=0.2ms idle=4.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"] 02:25:03.216 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 02:25:03.217 [debug] QUERY OK source="media_items" db=0.4ms idle=3.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:25:03.217 [debug] QUERY OK source="sources" db=0.1ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:25:03.220 [debug] QUERY OK source="media_items" db=1.9ms idle=3.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 02:25:03.221 [debug] QUERY OK source="media_items" db=0.9ms 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 INNER JOIN "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] 02:25:03.221 [debug] QUERY OK source="sources" db=0.1ms idle=4.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:25:03.222 [info] Sent 200 in 23ms 02:25:09.002 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:25:39.004 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:26:00.286 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:26:09.005 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:26:39.007 [info] {"source":"oban","duration":705,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:27:00.287 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:27:09.008 [info] {"source":"oban","duration":912,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:27:39.010 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:28:00.288 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:28:09.012 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:28:39.013 [info] {"source":"oban","duration":904,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:29:00.289 [info] {"source":"oban","duration":271,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:29:09.015 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:29:39.016 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:30:00.290 [info] {"source":"oban","duration":265,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:30:09.018 [info] {"source":"oban","duration":947,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:30:39.020 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:31:00.291 [info] {"source":"oban","duration":177,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:31:09.021 [info] {"source":"oban","duration":654,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:31:39.022 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:32:00.292 [info] {"source":"oban","duration":256,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:32:09.023 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:32:39.024 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:33:00.293 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:33:09.025 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:33:09.920 [info] GET / 02:33:09.920 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:33:09.921 [debug] QUERY OK source="settings" db=0.1ms idle=1399.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:33:09.921 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1400.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:33:09.921 [debug] QUERY OK source="sources" db=0.0ms idle=1125.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:33:09.924 [debug] QUERY OK source="media_items" db=2.8ms idle=896.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:33:09.927 [debug] QUERY OK source="media_items" db=2.7ms idle=127.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:33:09.928 [debug] QUERY OK source="settings" db=0.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:33:09.928 [debug] QUERY OK source="settings" db=0.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:33:09.928 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:33:09.929 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 02:33:09.930 [debug] QUERY OK source="media_items" db=1.1ms idle=1.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)) [] 02:33:09.930 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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] 02:33:09.931 [debug] QUERY OK source="sources" db=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" IN (?,?,?)) [6, 4, 7] 02:33:09.933 [debug] QUERY OK source="media_items" db=1.8ms idle=3.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"))) [] 02:33:09.934 [debug] QUERY OK source="media_items" db=0.8ms 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 INNER JOIN "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] 02:33:09.935 [debug] QUERY OK source="sources" db=0.1ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:33:09.936 [info] Sent 200 in 15ms 02:33:10.825 [info] GET /wp-json/ 02:33:10.825 [debug] QUERY OK source="settings" db=0.1ms idle=894.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:33:10.825 [debug] QUERY OK source="settings" db=0.0ms idle=892.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:33:10.825 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:33:10.826 [error] #PID<0.89951.0> running PinchflatWeb.Endpoint (connection #PID<0.89950.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /wp-json/ ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-json (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.89950.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-json/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36100}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/json,*/*", "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)", "x-forwarded-for" => "185.218.86.21", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.218.86.21" }, 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.moozuk.net", method: "GET", owner: #PID<0.89951.0>, params: %{}, path_info: ["wp-json"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/json,*/*"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)"}, {"x-forwarded-for", "185.218.86.21"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "185.218.86.21"} ], request_path: "/wp-json/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9--nFVxRCLjNcABWRC"} ], 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.89950.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-json/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36100}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/json,*/*", "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)", "x-forwarded-for" => "185.218.86.21", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.218.86.21" }, 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 /wp-json (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.89950.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-json/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36100}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/json,*/*", "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)", "x-forwarded-for" => "185.218.86.21", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.218.86.21" }, 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.moozuk.net", method: "GET", owner: #PID<0.89951.0>, params: %{}, path_info: ["wp-json"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/json,*/*"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)"}, {"x-forwarded-for", "185.218.86.21"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "185.218.86.21"} ], request_path: "/wp-json/", resp_body: nil, resp_cookies: %{}, resp_headers: [ (truncated) 02:33:11.629 [info] GET /xmlrpc.php 02:33:11.630 [debug] QUERY OK source="settings" db=0.1ms idle=831.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:33:11.630 [debug] QUERY OK source="settings" db=0.0ms idle=804.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:33:11.630 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:33:11.630 [error] #PID<0.89953.0> running PinchflatWeb.Endpoint (connection #PID<0.89952.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /xmlrpc.php?rsd ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /xmlrpc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.89952.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/xmlrpc.php", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36114}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/json,*/*", "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)", "x-forwarded-for" => "185.218.86.21", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.218.86.21" }, method: "GET", body_length: 0, path_info: :undefined, qs: "rsd", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.89953.0>, params: %{"rsd" => ""}, path_info: ["xmlrpc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"rsd" => ""}, query_string: "rsd", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/json,*/*"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)"}, {"x-forwarded-for", "185.218.86.21"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "185.218.86.21"} ], request_path: "/xmlrpc.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9--qFMy8-Wac8ACVwB"} ], 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.89952.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/xmlrpc.php", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36114}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/json,*/*", "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)", "x-forwarded-for" => "185.218.86.21", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.218.86.21" }, method: "GET", body_length: 0, path_info: :undefined, qs: "rsd", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /xmlrpc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.89952.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/xmlrpc.php", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36114}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/json,*/*", "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)", "x-forwarded-for" => "185.218.86.21", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.218.86.21" }, method: "GET", body_length: 0, path_info: :undefined, qs: "rsd", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.89953.0>, params: %{"rsd" => ""}, path_info: ["xmlrpc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"rsd" => ""}, query_string: "rsd", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/json,*/*"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)"}, {"x-forwarded-for", "185.218.86.21"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "185.218.86.21"} ], request_path: "/xmlrpc.php", resp_body: (truncated) 02:33:39.026 [info] {"source":"oban","duration":852,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:34:00.294 [info] {"source":"oban","duration":193,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:34:09.028 [info] {"source":"oban","duration":949,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:34:38.975 [info] GET / 02:34:38.975 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:34:38.976 [debug] QUERY OK source="settings" db=0.1ms idle=1455.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:38.976 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1455.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:34:38.976 [debug] QUERY OK source="sources" db=0.0ms idle=1090.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:34:38.985 [debug] QUERY OK source="media_items" db=8.6ms idle=455.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:38.986 [debug] QUERY OK source="media_items" db=1.0ms idle=98.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:38.987 [debug] QUERY OK source="settings" db=0.1ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:38.987 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:38.987 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:38.988 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:34:38.989 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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)) [] 02:34:38.989 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:34:38.990 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:34:38.993 [debug] QUERY OK source="media_items" db=2.6ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 02:34:38.994 [debug] QUERY OK source="media_items" db=1.0ms idle=5.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:34:38.994 [debug] QUERY OK source="sources" db=0.1ms idle=5.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:34:38.995 [info] Sent 200 in 19ms 02:34:39.030 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:34:39.127 [info] GET / 02:34:39.128 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:34:39.128 [debug] QUERY OK source="settings" db=0.1ms idle=138.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:39.128 [debug] QUERY OK source="media_profiles" db=0.0ms idle=135.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:34:39.128 [debug] QUERY OK source="sources" db=0.0ms idle=134.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:34:39.139 [debug] QUERY OK source="media_items" db=10.6ms idle=134.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:39.143 [debug] QUERY OK source="media_items" db=3.1ms idle=109.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:39.143 [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 [] 02:34:39.143 [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 [] 02:34:39.144 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:39.144 [debug] QUERY OK source="tasks" db=0.1ms idle=5.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"] 02:34:39.146 [debug] QUERY OK source="media_items" db=1.0ms idle=2.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)) [] 02:34:39.146 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 02:34:39.147 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?,?)) [6, 4, 7] 02:34:39.149 [debug] QUERY OK source="media_items" db=1.9ms idle=3.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"))) [] 02:34:39.150 [debug] QUERY OK source="media_items" db=0.8ms idle=4.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:34:39.150 [debug] QUERY OK source="sources" db=0.1ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:34:39.151 [info] Sent 200 in 23ms 02:34:43.877 [info] GET / 02:34:43.877 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:34:43.878 [debug] QUERY OK source="settings" db=0.2ms idle=1356.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:43.878 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1357.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:34:43.878 [debug] QUERY OK source="sources" db=0.0ms idle=1357.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:34:43.880 [debug] QUERY OK source="media_items" db=1.8ms idle=1357.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:43.883 [debug] QUERY OK source="media_items" db=3.2ms idle=989.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:43.884 [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 [] 02:34:43.884 [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 [] 02:34:43.884 [debug] QUERY OK source="settings" db=0.0ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:43.885 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 02:34:43.887 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 02:34:43.887 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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] 02:34:43.887 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?,?)) [6, 4, 7] 02:34:43.890 [debug] QUERY OK source="media_items" db=1.9ms idle=3.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 02:34:43.891 [debug] QUERY OK source="media_items" db=1.2ms idle=4.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:34:43.892 [debug] QUERY OK source="sources" db=0.2ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:34:43.893 [info] Sent 200 in 15ms 02:34:49.356 [info] GET / 02:34:49.356 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:34:49.356 [debug] QUERY OK source="settings" db=0.2ms idle=1835.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:49.356 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1835.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:34:49.357 [debug] QUERY OK source="sources" db=0.0ms idle=1835.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:34:49.359 [debug] QUERY OK source="media_items" db=2.6ms idle=1460.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:49.361 [debug] QUERY OK source="media_items" db=1.5ms idle=462.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:49.362 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:49.362 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:49.362 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:49.363 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 02:34:49.364 [debug] QUERY OK source="media_items" db=0.7ms idle=1.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)) [] 02:34:49.364 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:34:49.365 [debug] QUERY OK source="sources" db=0.1ms idle=2.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 (?,?,?)) [6, 4, 7] 02:34:49.368 [debug] QUERY OK source="media_items" db=2.6ms idle=2.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"))) [] 02:34:49.369 [debug] QUERY OK source="media_items" db=0.9ms idle=5.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:34:49.369 [debug] QUERY OK source="sources" db=0.1ms idle=5.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:34:49.370 [info] Sent 200 in 14ms 02:34:49.796 [info] GET /sources 02:34:49.797 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 02:34:49.927 [debug] QUERY OK source="settings" db=0.1ms idle=561.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:49.927 [debug] QUERY OK source="settings" db=0.1ms idle=559.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:49.928 [debug] QUERY OK source="settings" db=0.1ms idle=558.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:49.928 [debug] QUERY OK source="settings" db=0.0ms idle=558.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:49.928 [debug] QUERY OK source="settings" db=0.0ms idle=29.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:49.932 [debug] QUERY OK source="sources" db=3.7ms idle=1.6ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 02:34:49.938 [debug] QUERY OK source="sources" db=5.0ms idle=5.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", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 02:34:49.939 [info] Sent 200 in 142ms 02:34:50.142 [info] GET / 02:34:50.142 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:34:50.143 [debug] QUERY OK source="settings" db=0.2ms idle=214.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:50.143 [debug] QUERY OK source="media_profiles" db=0.1ms idle=214.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:34:50.143 [debug] QUERY OK source="sources" db=0.1ms idle=215.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:34:50.145 [debug] QUERY OK source="media_items" db=1.8ms idle=211.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:50.146 [debug] QUERY OK source="media_items" db=0.9ms idle=207.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:34:50.146 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:50.147 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:50.147 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:50.147 [debug] QUERY OK source="tasks" db=0.0ms idle=2.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"] 02:34:50.149 [debug] QUERY OK source="media_items" db=0.9ms idle=1.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)) [] 02:34:50.149 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:34:50.149 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:34:50.152 [debug] QUERY OK source="media_items" db=1.9ms idle=3.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"))) [] 02:34:50.153 [debug] QUERY OK source="media_items" db=0.9ms idle=4.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] 02:34:50.154 [debug] QUERY OK source="sources" db=0.1ms idle=4.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:34:50.154 [info] Sent 200 in 12ms 02:34:50.752 [info] GET /sources/4 02:34:50.752 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 02:34:50.752 [debug] QUERY OK source="sources" db=0.1ms idle=602.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" = ?) [4] 02:34:50.752 [debug] QUERY OK source="media_profiles" db=0.0ms idle=602.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] 02:34:50.802 [debug] QUERY OK source="tasks" db=49.0ms idle=600.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 02:34:50.802 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=648.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16329] 02:34:50.803 [debug] QUERY OK source="settings" db=0.1ms idle=648.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:50.803 [debug] QUERY OK source="settings" db=0.0ms idle=50.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:50.803 [debug] QUERY OK source="settings" db=0.0ms idle=50.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:50.804 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:34:50.805 [debug] QUERY OK source="media_items" db=0.3ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 02:34:50.805 [debug] QUERY OK source="media_items" db=0.3ms idle=2.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 ? [4, 10, 0] 02:34:50.805 [debug] QUERY OK source="sources" db=0.1ms idle=2.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" = ?) [4] 02:34:50.806 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 02:34:50.806 [debug] QUERY OK source="media_items" db=0.3ms idle=1.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:34:50.807 [debug] QUERY OK source="sources" db=0.0ms idle=1.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:34:50.807 [debug] QUERY OK source="media_items" db=0.1ms idle=1.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [4] 02:34:50.807 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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 ? [4, 10, 0] 02:34:50.808 [info] Sent 200 in 56ms 02:34:51.025 [info] GET /media_profiles 02:34:51.025 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 02:34:51.026 [debug] QUERY OK source="media_profiles" db=0.2ms idle=219.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", (SELECT count(ss0."id") AS "result" FROM "sources" AS ss0 WHERE (ss0."media_profile_id" = m0."id")) FROM "media_profiles" AS m0 WHERE (m0."marked_for_deletion_at" IS NULL) ORDER BY m0."name" [] 02:34:51.026 [debug] QUERY OK source="settings" db=0.0ms idle=219.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.027 [debug] QUERY OK source="settings" db=0.0ms idle=219.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.027 [debug] QUERY OK source="settings" db=0.0ms idle=219.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.028 [info] Sent 200 in 2ms 02:34:51.257 [info] GET /sources/4/media/50466 02:34:51.258 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50466", "source_id" => "4"} Pipelines: [:browser] 02:34:51.258 [debug] QUERY OK source="media_items" db=0.1ms idle=358.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" = ?) [50466] 02:34:51.259 [debug] QUERY OK source="tasks" db=0.1ms idle=232.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50466] 02:34:51.259 [debug] QUERY OK source="sources" db=0.1ms idle=232.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" = ?) [4] 02:34:51.259 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=232.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16327] 02:34:51.259 [debug] QUERY OK source="settings" db=0.0ms idle=232.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.259 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.260 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:51.260 [debug] QUERY OK source="media_profiles" db=0.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] 02:34:51.261 [info] Sent 200 in 3ms 02:34:51.479 [info] GET /settings 02:34:51.479 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 02:34:51.480 [debug] QUERY OK source="settings" db=0.2ms idle=220.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.480 [debug] QUERY OK source="settings" db=0.0ms idle=220.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.480 [debug] QUERY OK source="settings" db=0.1ms idle=220.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.481 [debug] QUERY OK source="settings" db=0.1ms idle=221.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.482 [info] Sent 200 in 2ms 02:34:51.683 [info] GET /sources/6/media/50411 02:34:51.683 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50411", "source_id" => "6"} Pipelines: [:browser] 02:34:51.683 [debug] QUERY OK source="media_items" db=0.2ms idle=423.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50411] 02:34:51.684 [debug] QUERY OK source="sources" db=0.1ms idle=203.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" = ?) [6] 02:34:51.684 [debug] QUERY OK source="tasks" db=0.2ms idle=203.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50411] 02:34:51.684 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=203.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16293, 16337] 02:34:51.685 [debug] QUERY OK source="settings" db=0.0ms idle=203.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.685 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:51.685 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:51.685 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:51.686 [info] Sent 200 in 3ms 02:34:51.887 [info] GET /app_info 02:34:51.888 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 02:34:51.888 [debug] QUERY OK source="settings" db=0.1ms idle=203.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.888 [debug] QUERY OK source="settings" db=0.0ms idle=203.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.889 [debug] QUERY OK source="settings" db=0.0ms idle=203.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.889 [debug] QUERY OK source="settings" db=0.0ms idle=203.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.889 [debug] QUERY OK source="settings" db=0.0ms idle=203.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:51.890 [info] Sent 200 in 2ms 02:34:52.094 [info] GET /sources/6 02:34:52.094 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 02:34:52.095 [debug] QUERY OK source="sources" db=0.1ms idle=206.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] 02:34:52.095 [debug] QUERY OK source="media_profiles" db=0.0ms idle=206.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] 02:34:52.096 [debug] QUERY OK source="tasks" db=0.4ms idle=206.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 02:34:52.096 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=206.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" = ?) [16333] 02:34:52.096 [debug] QUERY OK source="settings" db=0.1ms idle=196.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:52.096 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:52.097 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:52.097 [debug] QUERY OK source="sources" db=0.0ms idle=1.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:34:52.098 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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")))) [6] 02:34:52.098 [debug] QUERY OK source="media_items" db=0.3ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:34:52.099 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:34:52.099 [debug] QUERY OK source="media_items" db=0.0ms idle=2.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 02:34:52.099 [debug] QUERY OK source="media_items" db=0.2ms idle=1.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:34:52.100 [debug] QUERY OK source="sources" db=0.1ms idle=1.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] 02:34:52.100 [debug] QUERY OK source="media_items" db=0.1ms idle=1.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] 02:34:52.101 [debug] QUERY OK source="media_items" db=0.2ms idle=1.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:34:52.101 [info] Sent 200 in 6ms 02:34:52.302 [info] GET /sources/3/media/47311 02:34:52.302 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47311", "source_id" => "3"} Pipelines: [:browser] 02:34:52.302 [debug] QUERY OK source="media_items" db=0.1ms idle=203.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" = ?) [47311] 02:34:52.303 [debug] QUERY OK source="tasks" db=0.1ms idle=203.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47311] 02:34:52.303 [debug] QUERY OK source="sources" db=0.2ms idle=202.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:52.303 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=202.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 (?,?,?,?,?,?,?,?,?,?)) [15755, 16007, 16044, 16109, 16149, 16183, 16214, 16245, 16287, 16325] 02:34:52.304 [debug] QUERY OK source="settings" db=0.1ms idle=203.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:52.304 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:52.304 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:52.305 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:52.305 [info] Sent 200 in 3ms 02:34:52.514 [info] GET /sources/3 02:34:52.514 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 02:34:52.514 [debug] QUERY OK source="sources" db=0.1ms idle=210.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] 02:34:52.515 [debug] QUERY OK source="media_profiles" db=0.1ms idle=210.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:52.515 [debug] QUERY OK source="tasks" db=0.4ms idle=210.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 (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 02:34:52.515 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=211.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16326] 02:34:52.516 [debug] QUERY OK source="settings" db=0.1ms idle=210.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:52.516 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:52.516 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:52.517 [debug] QUERY OK source="sources" db=0.1ms idle=1.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:52.518 [debug] QUERY OK source="media_items" db=0.5ms idle=1.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")))) [3] 02:34:52.519 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=2.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 ? [3, 10, 0] 02:34:52.519 [debug] QUERY OK source="sources" db=0.0ms idle=3.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:52.520 [debug] QUERY OK source="media_items" db=0.1ms idle=3.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 02:34:52.520 [debug] QUERY OK source="media_items" db=0.4ms idle=2.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 ? [3, 10, 0] 02:34:52.521 [debug] QUERY OK source="sources" db=0.0ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:52.522 [debug] QUERY OK source="media_items" db=0.4ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [3] 02:34:52.522 [debug] QUERY OK source="media_items" db=0.6ms idle=2.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:34:52.523 [info] Sent 200 in 9ms 02:34:52.755 [info] GET /sources/3/media/37712 02:34:52.755 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "37712", "source_id" => "3"} Pipelines: [:browser] 02:34:52.755 [debug] QUERY OK source="media_items" db=0.2ms idle=235.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" = ?) [37712] 02:34:52.756 [debug] QUERY OK source="tasks" db=0.1ms idle=235.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [37712] 02:34:52.756 [debug] QUERY OK source="sources" db=0.2ms idle=234.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:52.756 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=234.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 (?,?,?,?)) [14777, 15300, 15838, 16324] 02:34:52.757 [debug] QUERY OK source="settings" db=0.0ms idle=234.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:52.757 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:52.757 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:52.758 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:52.758 [info] Sent 200 in 3ms 02:34:52.990 [info] GET /sources/7/media/32741 02:34:52.990 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32741", "source_id" => "7"} Pipelines: [:browser] 02:34:52.991 [debug] QUERY OK source="media_items" db=0.2ms idle=233.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" = ?) [32741] 02:34:52.991 [debug] QUERY OK source="tasks" db=0.1ms idle=233.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32741] 02:34:52.991 [debug] QUERY OK source="sources" db=0.2ms idle=233.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:52.991 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=233.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 (?,?,?)) [15089, 15575, 16074] 02:34:52.992 [debug] QUERY OK source="settings" db=0.0ms idle=90.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:52.992 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:52.992 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:52.993 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:52.993 [info] Sent 200 in 3ms 02:34:53.233 [info] GET /sources/7/media/32687 02:34:53.233 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32687", "source_id" => "7"} Pipelines: [:browser] 02:34:53.234 [debug] QUERY OK source="media_items" db=0.1ms idle=242.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" = ?) [32687] 02:34:53.234 [debug] QUERY OK source="tasks" db=0.2ms idle=242.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32687] 02:34:53.234 [debug] QUERY OK source="sources" db=0.3ms idle=241.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] 02:34:53.235 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=242.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15088, 15574, 16073] 02:34:53.235 [debug] QUERY OK source="settings" db=0.0ms idle=242.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:53.235 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:53.236 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:53.236 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:53.237 [info] Sent 200 in 3ms 02:34:53.458 [info] GET /sources/7/media/32682 02:34:53.458 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32682", "source_id" => "7"} Pipelines: [:browser] 02:34:53.459 [debug] QUERY OK source="media_items" db=0.3ms idle=223.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" = ?) [32682] 02:34:53.459 [debug] QUERY OK source="tasks" db=0.1ms idle=223.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32682] 02:34:53.459 [debug] QUERY OK source="sources" db=0.2ms idle=223.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] 02:34:53.460 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=223.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 (?,?,?)) [15087, 15573, 16072] 02:34:53.460 [debug] QUERY OK source="settings" db=0.0ms idle=223.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:53.460 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:53.460 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:53.461 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:53.462 [info] Sent 200 in 3ms 02:34:53.766 [info] GET /sources/7/media/50511 02:34:53.767 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50511", "source_id" => "7"} Pipelines: [:browser] 02:34:53.767 [debug] QUERY OK source="media_items" db=0.1ms idle=307.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" = ?) [50511] 02:34:53.767 [debug] QUERY OK source="tasks" db=0.1ms idle=307.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50511] 02:34:53.767 [debug] QUERY OK source="sources" db=0.1ms idle=307.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] 02:34:53.768 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=307.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16331] 02:34:53.768 [debug] QUERY OK source="settings" db=0.0ms idle=307.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:53.768 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:53.768 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:53.769 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:53.770 [info] Sent 200 in 3ms 02:34:54.041 [info] GET /sources/7 02:34:54.041 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 02:34:54.041 [debug] QUERY OK source="sources" db=0.1ms idle=273.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:54.041 [debug] QUERY OK source="media_profiles" db=0.0ms idle=273.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] 02:34:54.042 [debug] QUERY OK source="tasks" db=0.3ms idle=273.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [7, "executing", "available", "scheduled", "retryable"] 02:34:54.042 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=273.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16332] 02:34:54.042 [debug] QUERY OK source="settings" db=0.0ms idle=140.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:54.043 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:54.043 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:54.044 [debug] QUERY OK source="sources" db=0.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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:54.045 [debug] QUERY OK source="media_items" db=1.4ms idle=1.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] 02:34:54.075 [debug] QUERY OK source="media_items" db=29.6ms idle=2.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:34:54.076 [debug] QUERY OK source="sources" db=0.1ms idle=33.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] 02:34:54.077 [debug] QUERY OK source="media_items" db=0.8ms idle=33.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 02:34:54.079 [debug] QUERY OK source="media_items" db=1.8ms idle=33.7ms 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] 02:34:54.080 [debug] QUERY OK source="sources" db=0.0ms idle=34.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] 02:34:54.082 [debug] QUERY OK source="media_items" db=1.6ms idle=5.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 02:34:54.084 [debug] QUERY OK source="media_items" db=1.8ms 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 ? [7, 10, 0] 02:34:54.085 [info] Sent 200 in 44ms 02:34:54.323 [info] GET /sources/7/media/50510 02:34:54.323 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50510", "source_id" => "7"} Pipelines: [:browser] 02:34:54.323 [debug] QUERY OK source="media_items" db=0.1ms idle=245.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" = ?) [50510] 02:34:54.323 [debug] QUERY OK source="tasks" db=0.0ms idle=244.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50510] 02:34:54.323 [debug] QUERY OK source="sources" db=0.0ms idle=243.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] 02:34:54.324 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=241.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" = ?) [16330] 02:34:54.324 [debug] QUERY OK source="settings" db=0.0ms idle=239.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:54.324 [debug] QUERY OK source="settings" db=0.0ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:54.324 [debug] QUERY OK source="settings" db=0.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:54.325 [debug] QUERY OK source="media_profiles" db=0.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] 02:34:54.326 [info] Sent 200 in 3ms 02:34:54.563 [info] GET /sources/4/media/50467 02:34:54.563 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50467", "source_id" => "4"} Pipelines: [:browser] 02:34:54.564 [debug] QUERY OK source="media_items" db=0.1ms idle=239.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" = ?) [50467] 02:34:54.564 [debug] QUERY OK source="tasks" db=0.0ms idle=240.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50467] 02:34:54.564 [debug] QUERY OK source="sources" db=0.1ms idle=239.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" = ?) [4] 02:34:54.564 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=239.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16328] 02:34:54.565 [debug] QUERY OK source="settings" db=0.1ms idle=239.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:54.565 [debug] QUERY OK source="settings" db=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 [] 02:34:54.565 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:54.566 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:54.567 [info] Sent 200 in 3ms 02:34:54.795 [info] GET /sources/5 02:34:54.796 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 02:34:54.796 [debug] QUERY OK source="sources" db=0.2ms idle=231.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:54.797 [debug] QUERY OK source="media_profiles" db=0.1ms idle=231.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] 02:34:54.797 [debug] QUERY OK source="tasks" db=0.4ms idle=231.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 (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 02:34:54.797 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=232.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16319] 02:34:54.798 [debug] QUERY OK source="settings" db=0.0ms idle=231.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:54.798 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:54.798 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:54.799 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:54.799 [debug] QUERY OK source="media_items" db=0.2ms idle=1.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 02:34:54.800 [debug] QUERY OK source="media_items" db=0.4ms idle=1.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 ? [5, 10, 0] 02:34:54.800 [debug] QUERY OK source="sources" db=0.0ms idle=2.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:54.801 [debug] QUERY OK source="media_items" db=0.0ms idle=2.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 02:34:54.801 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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 ? [5, 10, 0] 02:34:54.801 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:54.802 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [5] 02:34:54.802 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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 ? [5, 10, 0] 02:34:54.803 [info] Sent 200 in 7ms 02:34:55.012 [info] GET /sources/3/ 02:34:55.012 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 02:34:55.013 [debug] QUERY OK source="sources" db=0.2ms idle=211.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:55.013 [debug] QUERY OK source="media_profiles" db=0.0ms idle=211.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] 02:34:55.014 [debug] QUERY OK source="tasks" db=0.3ms idle=211.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 02:34:55.014 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=211.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" = ?) [16326] 02:34:55.014 [debug] QUERY OK source="settings" db=0.0ms idle=110.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:55.014 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:55.014 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:55.015 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:55.016 [debug] QUERY OK source="media_items" db=0.5ms idle=1.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")))) [3] 02:34:55.017 [debug] QUERY OK source="media_items" db=0.8ms idle=2.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 ? [3, 10, 0] 02:34:55.018 [debug] QUERY OK source="sources" db=0.0ms idle=3.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:55.018 [debug] QUERY OK source="media_items" db=0.1ms idle=3.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 02:34:55.019 [debug] QUERY OK source="media_items" db=0.4ms idle=2.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:34:55.019 [debug] QUERY OK source="sources" db=0.0ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:55.020 [debug] QUERY OK source="media_items" db=0.5ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [3] 02:34:55.021 [debug] QUERY OK source="media_items" db=0.7ms idle=2.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:34:55.022 [info] Sent 200 in 9ms 02:34:56.033 [info] GET /sources/5/ 02:34:56.034 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 02:34:56.034 [debug] QUERY OK source="sources" db=0.2ms idle=1015.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:56.034 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1015.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:34:56.035 [debug] QUERY OK source="tasks" db=0.2ms idle=1014.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 02:34:56.035 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=1014.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16319] 02:34:56.035 [debug] QUERY OK source="settings" db=0.0ms idle=131.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.035 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:56.036 [debug] QUERY OK source="settings" db=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 [] 02:34:56.037 [debug] QUERY OK source="sources" db=0.0ms idle=1.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:56.037 [debug] QUERY OK source="media_items" db=0.2ms idle=2.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 02:34:56.038 [debug] QUERY OK source="media_items" db=0.5ms idle=2.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:34:56.039 [debug] QUERY OK source="sources" db=0.1ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:56.039 [debug] QUERY OK source="media_items" db=0.1ms idle=2.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 02:34:56.039 [debug] QUERY OK source="media_items" db=0.1ms idle=2.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:34:56.040 [debug] QUERY OK source="sources" db=0.0ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:56.040 [debug] QUERY OK source="media_items" db=0.1ms idle=1.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"))))) [5] 02:34:56.040 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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 ? [5, 10, 0] 02:34:56.041 [info] Sent 200 in 7ms 02:34:56.251 [info] GET /sources/6/edit 02:34:56.251 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 02:34:56.251 [debug] QUERY OK source="sources" db=0.1ms idle=212.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] 02:34:56.251 [debug] QUERY OK source="media_profiles" db=0.0ms idle=212.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" [] 02:34:56.252 [debug] QUERY OK source="settings" db=0.0ms idle=211.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.252 [debug] QUERY OK source="settings" db=0.1ms idle=211.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.252 [debug] QUERY OK source="settings" db=0.0ms idle=211.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.253 [info] Sent 200 in 2ms 02:34:56.455 [info] GET /sources/5/ 02:34:56.455 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 02:34:56.455 [debug] QUERY OK source="sources" db=0.2ms idle=203.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:56.456 [debug] QUERY OK source="media_profiles" db=0.1ms idle=204.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] 02:34:56.456 [debug] QUERY OK source="tasks" db=0.2ms idle=204.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 02:34:56.456 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=204.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16319] 02:34:56.457 [debug] QUERY OK source="settings" db=0.0ms idle=204.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.457 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:56.457 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:56.458 [debug] QUERY OK source="sources" db=0.0ms idle=1.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:56.458 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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")))) [5] 02:34:56.459 [debug] QUERY OK source="media_items" db=0.4ms idle=1.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 ? [5, 10, 0] 02:34:56.459 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:56.459 [debug] QUERY OK source="media_items" db=0.0ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 02:34:56.460 [debug] QUERY OK source="media_items" db=0.2ms idle=1.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:34:56.460 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:56.461 [debug] QUERY OK source="media_items" db=0.2ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [5] 02:34:56.461 [debug] QUERY OK source="media_items" db=0.2ms idle=1.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:34:56.462 [info] Sent 200 in 6ms 02:34:56.666 [info] GET /media_profiles/1 02:34:56.666 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 02:34:56.667 [debug] QUERY OK source="media_profiles" db=0.1ms idle=207.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 WHERE (m0."id" = ?) [1] 02:34:56.667 [debug] QUERY OK source="sources" db=0.2ms idle=207.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."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 02:34:56.668 [debug] QUERY OK source="settings" db=0.0ms idle=207.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.668 [debug] QUERY OK source="settings" db=0.0ms idle=207.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.668 [debug] QUERY OK source="settings" db=0.0ms idle=207.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.669 [info] Sent 200 in 2ms 02:34:56.871 [info] GET /sources/3/edit 02:34:56.872 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 02:34:56.872 [debug] QUERY OK source="sources" db=0.1ms idle=205.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:56.872 [debug] QUERY OK source="media_profiles" db=0.2ms idle=205.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" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 02:34:56.873 [debug] QUERY OK source="settings" db=0.0ms idle=205.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.873 [debug] QUERY OK source="settings" db=0.0ms idle=205.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.873 [debug] QUERY OK source="settings" db=0.0ms idle=205.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:56.874 [info] Sent 200 in 2ms 02:34:57.076 [info] GET /sources/5/edit 02:34:57.076 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 02:34:57.077 [debug] QUERY OK source="sources" db=0.2ms idle=203.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:34:57.077 [debug] QUERY OK source="media_profiles" db=0.0ms idle=204.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" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 02:34:57.077 [debug] QUERY OK source="settings" db=0.0ms idle=204.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:57.077 [debug] QUERY OK source="settings" db=0.0ms idle=204.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:57.078 [debug] QUERY OK source="settings" db=0.0ms idle=172.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:57.079 [info] Sent 200 in 2ms 02:34:57.280 [info] GET /sources/4/ 02:34:57.280 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 02:34:57.281 [debug] QUERY OK source="sources" db=0.2ms idle=203.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" = ?) [4] 02:34:57.281 [debug] QUERY OK source="media_profiles" db=0.1ms idle=203.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] 02:34:57.281 [debug] QUERY OK source="tasks" db=0.1ms idle=203.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 (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 02:34:57.282 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=204.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16329] 02:34:57.282 [debug] QUERY OK source="settings" db=0.1ms idle=204.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:57.282 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:57.282 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:57.283 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:34:57.284 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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")))) [4] 02:34:57.284 [debug] QUERY OK source="media_items" db=0.4ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:34:57.284 [debug] QUERY OK source="sources" db=0.0ms idle=2.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:34:57.285 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 02:34:57.285 [debug] QUERY OK source="media_items" db=0.3ms idle=1.7ms 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 ? [4, 10, 0] 02:34:57.286 [debug] QUERY OK source="sources" db=0.0ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:34:57.286 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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"))))) [4] 02:34:57.287 [debug] QUERY OK source="media_items" db=0.4ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:34:57.287 [info] Sent 200 in 7ms 02:34:57.490 [info] GET /sources/3/ 02:34:57.490 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 02:34:57.491 [debug] QUERY OK source="sources" db=0.1ms idle=205.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:57.491 [debug] QUERY OK source="media_profiles" db=0.0ms idle=205.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] 02:34:57.491 [debug] QUERY OK source="tasks" db=0.2ms idle=205.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 02:34:57.491 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=205.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16326] 02:34:57.492 [debug] QUERY OK source="settings" db=0.0ms idle=204.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:57.492 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:57.492 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:57.493 [debug] QUERY OK source="sources" db=0.0ms idle=1.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:57.494 [debug] QUERY OK source="media_items" db=0.6ms idle=1.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 02:34:57.495 [debug] QUERY OK source="media_items" db=0.7ms idle=2.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:34:57.495 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:57.496 [debug] QUERY OK source="media_items" db=0.2ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 02:34:57.496 [debug] QUERY OK source="media_items" db=0.3ms idle=2.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:34:57.497 [debug] QUERY OK source="sources" db=0.0ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:34:57.497 [debug] QUERY OK source="media_items" db=0.5ms idle=2.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [3] 02:34:57.498 [debug] QUERY OK source="media_items" db=0.8ms idle=2.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:34:57.499 [info] Sent 200 in 9ms 02:34:57.703 [info] GET /sources/4/ 02:34:57.703 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 02:34:57.704 [debug] QUERY OK source="sources" db=0.2ms idle=207.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" = ?) [4] 02:34:57.704 [debug] QUERY OK source="media_profiles" db=0.0ms idle=207.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] 02:34:57.704 [debug] QUERY OK source="tasks" db=0.1ms idle=207.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 02:34:57.705 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=207.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16329] 02:34:57.705 [debug] QUERY OK source="settings" db=0.0ms idle=206.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:57.705 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:57.705 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:57.706 [debug] QUERY OK source="sources" db=0.0ms idle=1.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" = ?) [4] 02:34:57.707 [debug] QUERY OK source="media_items" db=0.2ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 02:34:57.707 [debug] QUERY OK source="media_items" db=0.5ms idle=1.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:34:57.708 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:34:57.708 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 02:34:57.708 [debug] QUERY OK source="media_items" db=0.3ms idle=1.7ms 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 ? [4, 10, 0] 02:34:57.709 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:34:57.709 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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"))))) [4] 02:34:57.710 [debug] QUERY OK source="media_items" db=0.4ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:34:57.711 [info] Sent 200 in 7ms 02:34:57.912 [info] GET /sources/7/ 02:34:57.913 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 02:34:57.913 [debug] QUERY OK source="sources" db=0.1ms idle=204.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] 02:34:57.913 [debug] QUERY OK source="media_profiles" db=0.1ms idle=204.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] 02:34:57.914 [debug] QUERY OK source="tasks" db=0.2ms idle=204.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [7, "executing", "available", "scheduled", "retryable"] 02:34:57.914 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=204.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16332] 02:34:57.914 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:57.915 [debug] QUERY OK source="settings" db=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 [] 02:34:57.915 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:57.916 [debug] QUERY OK source="sources" db=0.1ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:57.918 [debug] QUERY OK source="media_items" db=1.6ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 02:34:57.920 [debug] QUERY OK source="media_items" db=2.1ms idle=3.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 02:34:57.921 [debug] QUERY OK source="sources" db=0.1ms idle=6.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:57.922 [debug] QUERY OK source="media_items" db=0.9ms idle=6.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 02:34:57.924 [debug] QUERY OK source="media_items" db=2.2ms idle=6.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:34:57.925 [debug] QUERY OK source="sources" db=0.1ms idle=7.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:57.927 [debug] QUERY OK source="media_items" db=1.5ms idle=5.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 02:34:57.929 [debug] QUERY OK source="media_items" db=1.5ms idle=6.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:34:57.930 [info] Sent 200 in 17ms 02:34:58.134 [info] GET /sources/7/edit 02:34:58.134 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 02:34:58.135 [debug] QUERY OK source="sources" db=0.1ms idle=212.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] 02:34:58.135 [debug] QUERY OK source="media_profiles" db=0.0ms idle=210.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" [] 02:34:58.135 [debug] QUERY OK source="settings" db=0.0ms idle=209.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.135 [debug] QUERY OK source="settings" db=0.0ms idle=208.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.135 [debug] QUERY OK source="settings" db=0.0ms idle=206.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.137 [info] Sent 200 in 2ms 02:34:58.338 [info] GET /sources/4/edit 02:34:58.338 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 02:34:58.339 [debug] QUERY OK source="sources" db=0.1ms idle=203.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" = ?) [4] 02:34:58.339 [debug] QUERY OK source="media_profiles" db=0.0ms idle=203.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" [] 02:34:58.339 [debug] QUERY OK source="settings" db=0.0ms idle=203.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.339 [debug] QUERY OK source="settings" db=0.0ms idle=203.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.339 [debug] QUERY OK source="settings" db=0.0ms idle=203.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.340 [info] Sent 200 in 2ms 02:34:58.541 [info] GET /sources/6/ 02:34:58.542 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 02:34:58.542 [debug] QUERY OK source="sources" db=0.1ms idle=203.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] 02:34:58.542 [debug] QUERY OK source="media_profiles" db=0.1ms idle=203.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] 02:34:58.543 [debug] QUERY OK source="tasks" db=0.2ms idle=203.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 02:34:58.543 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=203.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" = ?) [16333] 02:34:58.543 [debug] QUERY OK source="settings" db=0.0ms idle=203.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.543 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:58.544 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:58.545 [debug] QUERY OK source="sources" db=0.0ms idle=1.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] 02:34:58.545 [debug] QUERY OK source="media_items" db=0.1ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 02:34:58.545 [debug] QUERY OK source="media_items" db=0.3ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:34:58.546 [debug] QUERY OK source="sources" db=0.0ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:34:58.546 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 02:34:58.546 [debug] QUERY OK source="media_items" db=0.1ms idle=1.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:34:58.547 [debug] QUERY OK source="sources" db=0.0ms idle=1.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] 02:34:58.547 [debug] QUERY OK source="media_items" db=0.1ms idle=1.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"))))) [6] 02:34:58.547 [debug] QUERY OK source="media_items" db=0.2ms idle=1.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:34:58.548 [info] Sent 200 in 6ms 02:34:58.751 [info] GET /sources/6/ 02:34:58.751 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 02:34:58.752 [debug] QUERY OK source="sources" db=0.2ms idle=205.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] 02:34:58.752 [debug] QUERY OK source="media_profiles" db=0.1ms idle=205.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] 02:34:58.752 [debug] QUERY OK source="tasks" db=0.2ms idle=205.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 02:34:58.752 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=205.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16333] 02:34:58.753 [debug] QUERY OK source="settings" db=0.0ms idle=205.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.753 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.753 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.754 [debug] QUERY OK source="sources" db=0.1ms idle=1.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:34:58.754 [debug] QUERY OK source="media_items" db=0.1ms idle=1.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 02:34:58.754 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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 ? [6, 10, 0] 02:34:58.755 [debug] QUERY OK source="sources" db=0.0ms idle=1.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:34:58.755 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 02:34:58.755 [debug] QUERY OK source="media_items" db=0.1ms idle=1.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:34:58.756 [debug] QUERY OK source="sources" db=0.0ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:34:58.756 [debug] QUERY OK source="media_items" db=0.1ms idle=1.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [6] 02:34:58.757 [debug] QUERY OK source="media_items" db=0.2ms idle=1.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:34:58.757 [info] Sent 200 in 6ms 02:34:58.960 [info] GET /sources/7/ 02:34:58.960 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 02:34:58.961 [debug] QUERY OK source="sources" db=0.1ms idle=205.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:58.961 [debug] QUERY OK source="media_profiles" db=0.0ms idle=204.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] 02:34:58.961 [debug] QUERY OK source="tasks" db=0.2ms idle=204.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 (?,?,?,?)) [7, "executing", "available", "scheduled", "retryable"] 02:34:58.962 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=204.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16332] 02:34:58.962 [debug] QUERY OK source="settings" db=0.0ms idle=54.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:58.962 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:58.962 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:58.963 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:58.965 [debug] QUERY OK source="media_items" db=1.6ms idle=1.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 02:34:58.967 [debug] QUERY OK source="media_items" db=1.8ms idle=3.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] 02:34:58.968 [debug] QUERY OK source="sources" db=0.1ms idle=5.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:58.969 [debug] QUERY OK source="media_items" db=0.8ms idle=5.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 02:34:58.971 [debug] QUERY OK source="media_items" db=1.9ms idle=5.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:34:58.972 [debug] QUERY OK source="sources" db=0.1ms idle=6.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:34:58.973 [debug] QUERY OK source="media_items" db=1.5ms idle=4.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [7] 02:34:58.975 [debug] QUERY OK source="media_items" db=1.5ms idle=5.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:34:58.976 [info] Sent 200 in 16ms 02:34:59.185 [info] GET /sources/new 02:34:59.186 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 02:34:59.186 [debug] QUERY OK source="media_profiles" db=0.1ms idle=217.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" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 02:34:59.187 [debug] QUERY OK source="settings" db=0.1ms idle=215.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.187 [debug] QUERY OK source="settings" db=0.0ms idle=215.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.187 [debug] QUERY OK source="settings" db=0.0ms idle=213.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.187 [debug] QUERY OK source="settings" db=0.0ms idle=212.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.188 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.189 [info] Sent 200 in 3ms 02:34:59.391 [info] GET /sources/4/media/2272/edit 02:34:59.392 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2272", "source_id" => "4"} Pipelines: [:browser] 02:34:59.392 [debug] QUERY OK source="media_items" db=0.2ms idle=205.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" = ?) [2272] 02:34:59.392 [debug] QUERY OK source="settings" db=0.0ms idle=205.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.393 [debug] QUERY OK source="settings" db=0.1ms idle=205.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.393 [debug] QUERY OK source="settings" db=0.1ms idle=205.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.394 [info] Sent 200 in 2ms 02:34:59.596 [info] GET /sources/new 02:34:59.596 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{"template_id" => "4"} Pipelines: [:browser] 02:34:59.596 [debug] QUERY OK source="sources" db=0.1ms idle=408.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" = ?) [4] 02:34:59.597 [debug] QUERY OK source="media_profiles" db=0.1ms idle=204.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" [] 02:34:59.597 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:59.597 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:59.597 [debug] QUERY OK source="settings" db=0.0ms idle=204.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.598 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:59.598 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:34:59.599 [info] Sent 200 in 2ms 02:34:59.800 [info] GET /sources/4/force_download_pending 02:34:59.801 [debug] QUERY OK source="settings" db=0.3ms idle=203.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.801 [debug] QUERY OK source="settings" db=0.1ms idle=203.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:34:59.801 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:34:59.801 [error] #PID<0.90082.0> running PinchflatWeb.Endpoint (connection #PID<0.90081.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90081.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_download_pending", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46826}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90082.0>, params: %{}, path_info: ["sources", "4", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk"}, {"host", "pinchflat.moozuk.net"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"}, {"x-forwarded-for", "103.4.250.19"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "103.4.250.19"} ], request_path: "/sources/4/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_E9DBkoOBUqoACWXh"} ], 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.90081.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_download_pending", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46826}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, 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/4/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90081.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_download_pending", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46826}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchfla (truncated) 02:35:00.003 [info] GET /sources/4/force_redownload 02:35:00.004 [debug] QUERY OK source="settings" db=0.1ms 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 [] 02:35:00.004 [debug] QUERY OK source="settings" db=0.0ms idle=405.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:00.004 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:00.004 [error] #PID<0.90084.0> running PinchflatWeb.Endpoint (connection #PID<0.90083.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90083.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46836}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90084.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk"}, {"host", "pinchflat.moozuk.net"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"}, {"x-forwarded-for", "103.4.250.19"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "103.4.250.19"} ], request_path: "/sources/4/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_E9zhqWsP-N0ACWYB"} ], 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.90083.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46836}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, 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/4/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90083.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46836}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Go (truncated) 02:35:00.204 [info] GET /sources/4/force_index 02:35:00.205 [debug] QUERY OK source="settings" db=0.1ms idle=403.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:00.205 [debug] QUERY OK source="settings" db=0.0ms idle=403.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:00.205 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:00.205 [error] #PID<0.90086.0> running PinchflatWeb.Endpoint (connection #PID<0.90085.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90085.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46850}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90086.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk"}, {"host", "pinchflat.moozuk.net"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"}, {"x-forwarded-for", "103.4.250.19"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "103.4.250.19"} ], request_path: "/sources/4/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_E-jbZIGsg08ACWYh"} ], 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.90085.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46850}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, 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/4/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90085.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46850}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\" (truncated) 02:35:00.295 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:35:00.406 [info] GET /sources/4/force_metadata_refresh 02:35:00.407 [debug] QUERY OK source="settings" db=0.1ms idle=403.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:00.407 [debug] QUERY OK source="settings" db=0.0ms idle=403.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:00.407 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:00.407 [error] #PID<0.90088.0> running PinchflatWeb.Endpoint (connection #PID<0.90087.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90087.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46862}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90088.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk"}, {"host", "pinchflat.moozuk.net"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"}, {"x-forwarded-for", "103.4.250.19"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "103.4.250.19"} ], request_path: "/sources/4/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_E_TrX2QBC4QACWZB"} ], 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.90087.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46862}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, 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/4/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90087.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46862}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchfla (truncated) 02:35:00.614 [info] GET /sources/4/sync_files_on_disk 02:35:00.614 [debug] QUERY OK source="settings" db=0.1ms idle=409.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:00.614 [debug] QUERY OK source="settings" db=0.1ms idle=409.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:00.615 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:00.615 [error] #PID<0.90090.0> running PinchflatWeb.Endpoint (connection #PID<0.90089.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90089.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/sync_files_on_disk", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46876}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90090.0>, params: %{}, path_info: ["sources", "4", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk"}, {"host", "pinchflat.moozuk.net"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"}, {"x-forwarded-for", "103.4.250.19"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "103.4.250.19"} ], request_path: "/sources/4/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_FAFEGCYDT9wACWZh"} ], 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.90089.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/sync_files_on_disk", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46876}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, 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/4/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90089.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/sync_files_on_disk", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46876}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "s (truncated) 02:35:00.818 [info] GET /sources/4 02:35:00.818 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"delete_files" => "true", "id" => "4"} Pipelines: [:browser] 02:35:00.818 [debug] QUERY OK source="sources" db=0.1ms idle=523.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" = ?) [4] 02:35:00.819 [debug] QUERY OK source="media_profiles" db=0.1ms idle=411.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] 02:35:00.819 [debug] QUERY OK source="tasks" db=0.1ms idle=411.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 02:35:00.819 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=204.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" = ?) [16329] 02:35:00.819 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:00.820 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:00.820 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:00.821 [debug] QUERY OK source="sources" db=0.1ms idle=1.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" = ?) [4] 02:35:00.821 [debug] QUERY OK source="media_items" db=0.3ms idle=1.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 02:35:00.822 [debug] QUERY OK source="media_items" db=0.5ms idle=1.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:35:00.822 [debug] QUERY OK source="sources" db=0.0ms idle=2.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" = ?) [4] 02:35:00.822 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 02:35:00.823 [debug] QUERY OK source="media_items" db=0.4ms idle=1.7ms 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 ? [4, 10, 0] 02:35:00.824 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:00.824 [debug] QUERY OK source="media_items" db=0.3ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [4] 02:35:00.825 [debug] QUERY OK source="media_items" db=0.4ms idle=1.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 ? [4, 10, 0] 02:35:00.825 [info] Sent 200 in 7ms 02:35:01.026 [info] GET /sources/4/media/50466/edit 02:35:01.027 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50466", "source_id" => "4"} Pipelines: [:browser] 02:35:01.027 [debug] QUERY OK source="media_items" db=0.2ms idle=203.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" = ?) [50466] 02:35:01.028 [debug] QUERY OK source="settings" db=0.0ms idle=203.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.028 [debug] QUERY OK source="settings" db=0.0ms idle=203.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.028 [debug] QUERY OK source="settings" db=0.1ms idle=203.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.029 [info] Sent 200 in 2ms 02:35:01.230 [info] GET /sources/4/media/50467/edit 02:35:01.230 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50467", "source_id" => "4"} Pipelines: [:browser] 02:35:01.231 [debug] QUERY OK source="media_items" db=0.2ms idle=321.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" = ?) [50467] 02:35:01.231 [debug] QUERY OK source="settings" db=0.1ms idle=203.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.231 [debug] QUERY OK source="settings" db=0.0ms idle=203.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.232 [debug] QUERY OK source="settings" db=0.0ms idle=203.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.232 [info] Sent 200 in 2ms 02:35:01.435 [info] GET /sources/4/media/50259 02:35:01.435 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50259", "source_id" => "4"} Pipelines: [:browser] 02:35:01.435 [debug] QUERY OK source="media_items" db=0.1ms idle=407.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" = ?) [50259] 02:35:01.436 [debug] QUERY OK source="tasks" db=0.1ms idle=204.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50259] 02:35:01.436 [debug] QUERY OK source="sources" db=0.2ms idle=204.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" = ?) [4] 02:35:01.436 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=204.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" = ?) [16289] 02:35:01.436 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:01.437 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.437 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.437 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:01.439 [info] Sent 200 in 3ms 02:35:01.640 [info] GET /sources/4/media/50259/edit 02:35:01.640 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50259", "source_id" => "4"} Pipelines: [:browser] 02:35:01.641 [debug] QUERY OK source="media_items" db=0.4ms idle=204.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" = ?) [50259] 02:35:01.641 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:01.642 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:01.642 [debug] QUERY OK source="settings" db=0.0ms idle=204.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.643 [info] Sent 200 in 2ms 02:35:01.845 [info] GET /sources/4/media/50045 02:35:01.845 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50045", "source_id" => "4"} Pipelines: [:browser] 02:35:01.846 [debug] QUERY OK source="media_items" db=0.2ms idle=408.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50045] 02:35:01.846 [debug] QUERY OK source="tasks" db=0.1ms idle=205.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50045] 02:35:01.846 [debug] QUERY OK source="sources" db=0.1ms idle=204.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" = ?) [4] 02:35:01.846 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=204.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" = ?) [16247] 02:35:01.847 [debug] QUERY OK source="settings" db=0.1ms 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 [] 02:35:01.847 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:01.847 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:01.848 [debug] QUERY OK source="media_profiles" db=0.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] 02:35:01.849 [info] Sent 200 in 3ms 02:35:02.051 [info] GET /sources/4/media/50045/edit 02:35:02.052 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50045", "source_id" => "4"} Pipelines: [:browser] 02:35:02.052 [debug] QUERY OK source="media_items" db=0.1ms idle=204.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" = ?) [50045] 02:35:02.052 [debug] QUERY OK source="settings" db=0.0ms idle=205.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.052 [debug] QUERY OK source="settings" db=0.0ms idle=205.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.053 [debug] QUERY OK source="settings" db=0.0ms idle=205.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.053 [info] Sent 200 in 1ms 02:35:02.256 [info] GET /sources/4/media/49837 02:35:02.256 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49837", "source_id" => "4"} Pipelines: [:browser] 02:35:02.256 [debug] QUERY OK source="media_items" db=0.2ms idle=345.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" = ?) [49837] 02:35:02.257 [debug] QUERY OK source="tasks" db=0.0ms idle=204.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49837] 02:35:02.257 [debug] QUERY OK source="sources" db=0.2ms idle=204.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" = ?) [4] 02:35:02.257 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=204.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" = ?) [16216] 02:35:02.257 [debug] QUERY OK source="settings" db=0.1ms idle=204.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.258 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:02.258 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:02.258 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.260 [info] Sent 200 in 4ms 02:35:02.461 [info] GET /sources/4/media/49837/edit 02:35:02.461 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49837", "source_id" => "4"} Pipelines: [:browser] 02:35:02.462 [debug] QUERY OK source="media_items" db=0.2ms idle=204.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" = ?) [49837] 02:35:02.462 [debug] QUERY OK source="settings" db=0.0ms idle=204.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.462 [debug] QUERY OK source="settings" db=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 [] 02:35:02.463 [debug] QUERY OK source="settings" db=0.1ms idle=204.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.463 [info] Sent 200 in 2ms 02:35:02.664 [info] GET /sources/4/media/49630 02:35:02.664 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49630", "source_id" => "4"} Pipelines: [:browser] 02:35:02.665 [debug] QUERY OK source="media_items" db=0.3ms idle=406.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" = ?) [49630] 02:35:02.666 [debug] QUERY OK source="sources" db=0.1ms idle=203.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" = ?) [4] 02:35:02.666 [debug] QUERY OK source="tasks" db=0.3ms idle=203.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49630] 02:35:02.666 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=203.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" = ?) [16185] 02:35:02.666 [debug] QUERY OK source="settings" db=0.0ms idle=203.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.666 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.667 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:02.667 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.668 [info] Sent 200 in 3ms 02:35:02.694 [info] GET /sources/4/media/49424 02:35:02.694 [info] GET /sources/4/media/49630/edit 02:35:02.694 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49630", "source_id" => "4"} Pipelines: [:browser] 02:35:02.694 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49424", "source_id" => "4"} Pipelines: [:browser] 02:35:02.695 [debug] QUERY OK source="media_items" db=0.3ms idle=28.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" = ?) [49424] 02:35:02.695 [debug] QUERY OK source="media_items" db=0.2ms idle=28.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" = ?) [49630] 02:35:02.695 [debug] QUERY OK source="tasks" db=0.0ms idle=28.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49424] 02:35:02.695 [debug] QUERY OK source="settings" db=0.2ms idle=28.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.696 [debug] QUERY OK source="sources" db=0.2ms idle=28.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" = ?) [4] 02:35:02.696 [debug] QUERY OK source="settings" db=0.1ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.696 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=0.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" = ?) [16151] 02:35:02.696 [debug] QUERY OK source="settings" db=0.1ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.696 [debug] QUERY OK source="settings" db=0.1ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.696 [debug] QUERY OK source="settings" db=0.2ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.697 [info] Sent 200 in 2ms 02:35:02.697 [debug] QUERY OK source="settings" db=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 [] 02:35:02.697 [debug] QUERY OK source="media_profiles" db=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] 02:35:02.699 [info] GET /sources/4/media/49424/edit 02:35:02.699 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49424", "source_id" => "4"} Pipelines: [:browser] 02:35:02.699 [info] Sent 200 in 4ms 02:35:02.699 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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" = ?) [49424] 02:35:02.699 [debug] QUERY OK source="settings" db=0.0ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.699 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.700 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.700 [info] Sent 200 in 1ms 02:35:02.706 [info] GET /sources/4/media/49006 02:35:02.706 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49006", "source_id" => "4"} Pipelines: [:browser] 02:35:02.707 [debug] QUERY OK source="media_items" db=0.1ms 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 WHERE (m0."id" = ?) [49006] 02:35:02.707 [debug] QUERY OK source="tasks" db=0.1ms idle=7.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49006] 02:35:02.707 [debug] QUERY OK source="sources" db=0.2ms idle=7.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:02.708 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=7.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" = ?) [16046] 02:35:02.708 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:02.708 [debug] QUERY OK source="settings" db=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 [] 02:35:02.708 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:02.709 [debug] QUERY OK source="media_profiles" db=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] 02:35:02.710 [info] Sent 200 in 3ms 02:35:02.711 [info] GET /sources/4/media/48798 02:35:02.711 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48798", "source_id" => "4"} Pipelines: [:browser] 02:35:02.711 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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" = ?) [48798] 02:35:02.712 [debug] QUERY OK source="tasks" db=0.1ms idle=3.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48798] 02:35:02.712 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [4] 02:35:02.712 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=3.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16009] 02:35:02.712 [debug] QUERY OK source="settings" db=0.0ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.713 [info] GET /sources/4/media/49006/edit 02:35:02.713 [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 [] 02:35:02.713 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49006", "source_id" => "4"} Pipelines: [:browser] 02:35:02.713 [info] GET /sources/4/media/48798/edit 02:35:02.713 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48798", "source_id" => "4"} Pipelines: [:browser] 02:35:02.714 [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 [] 02:35:02.714 [debug] QUERY OK source="media_items" db=0.4ms idle=1.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" = ?) [49006] 02:35:02.714 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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" = ?) [48798] 02:35:02.714 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.714 [debug] QUERY OK source="settings" db=0.2ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.714 [debug] QUERY OK source="settings" db=0.2ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.715 [debug] QUERY OK source="settings" db=0.1ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.715 [debug] QUERY OK source="settings" db=0.3ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.715 [debug] QUERY OK source="settings" db=0.1ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.716 [debug] QUERY OK source="settings" db=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 [] 02:35:02.716 [info] Sent 200 in 5ms 02:35:02.716 [info] Sent 200 in 2ms 02:35:02.716 [info] GET /sources/4/media/48592 02:35:02.716 [info] Sent 200 in 3ms 02:35:02.716 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48592", "source_id" => "4"} Pipelines: [:browser] 02:35:02.718 [debug] QUERY OK source="media_items" db=0.3ms idle=2.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" = ?) [48592] 02:35:02.718 [debug] QUERY OK source="tasks" db=0.2ms idle=3.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48592] 02:35:02.718 [debug] QUERY OK source="sources" db=0.2ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:02.719 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=3.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15975] 02:35:02.719 [info] GET /sources/4/media/2255 02:35:02.719 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2255", "source_id" => "4"} Pipelines: [:browser] 02:35:02.719 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.719 [debug] QUERY OK source="media_items" db=0.1ms idle=1.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" = ?) [2255] 02:35:02.719 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.720 [debug] QUERY OK source="sources" db=0.1ms idle=0.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:02.720 [debug] QUERY OK source="tasks" db=0.2ms idle=1.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2255] 02:35:02.720 [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 [] 02:35:02.720 [debug] QUERY OK source="settings" db=0.0ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.720 [debug] QUERY OK source="settings" db=0.2ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.720 [info] GET /sources/4/media/48592/edit 02:35:02.721 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48592", "source_id" => "4"} Pipelines: [:browser] 02:35:02.721 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=0.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] 02:35:02.721 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:02.721 [debug] QUERY OK source="media_items" db=0.4ms idle=0.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [48592] 02:35:02.721 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.722 [info] Sent 200 in 3ms 02:35:02.722 [info] Sent 200 in 5ms 02:35:02.723 [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 [] 02:35:02.723 [info] GET /sources/4/media/2255/edit 02:35:02.723 [info] GET /sources/4/media/2259 02:35:02.723 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2255", "source_id" => "4"} Pipelines: [:browser] 02:35:02.723 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2259", "source_id" => "4"} Pipelines: [:browser] 02:35:02.723 [debug] QUERY OK source="settings" db=0.7ms 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 [] 02:35:02.724 [debug] QUERY OK source="media_items" db=0.3ms idle=2.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" = ?) [2255] 02:35:02.724 [info] GET /sources/4/media/2257 02:35:02.724 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2257", "source_id" => "4"} Pipelines: [:browser] 02:35:02.724 [debug] QUERY OK source="media_items" db=0.3ms idle=2.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2259] 02:35:02.724 [debug] QUERY OK source="settings" db=0.1ms queue=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 [] 02:35:02.724 [debug] QUERY OK source="settings" db=0.3ms 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 [] 02:35:02.724 [debug] QUERY OK source="media_items" db=0.3ms idle=0.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2257] 02:35:02.725 [debug] QUERY OK source="tasks" db=0.4ms idle=0.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2259] 02:35:02.725 [debug] QUERY OK source="settings" db=0.3ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.725 [info] Sent 200 in 4ms 02:35:02.725 [info] GET /sources/4/media/2257/edit 02:35:02.725 [debug] QUERY OK source="tasks" db=0.4ms idle=0.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2257] 02:35:02.725 [debug] QUERY OK source="sources" db=0.3ms idle=0.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:02.725 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2257", "source_id" => "4"} Pipelines: [:browser] 02:35:02.725 [debug] QUERY OK source="settings" db=0.3ms 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 [] 02:35:02.726 [debug] QUERY OK source="media_items" db=0.3ms idle=0.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" = ?) [2257] 02:35:02.726 [debug] QUERY OK source="settings" db=0.4ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.726 [info] Sent 200 in 3ms 02:35:02.726 [debug] QUERY OK source="settings" db=0.2ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.726 [debug] QUERY OK source="settings" db=0.2ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.727 [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 [] 02:35:02.727 [debug] QUERY OK source="sources" db=2.5ms idle=0.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" = ?) [4] 02:35:02.727 [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 [] 02:35:02.727 [debug] QUERY OK source="settings" db=0.1ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.728 [debug] QUERY OK source="media_profiles" db=0.2ms idle=0.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] 02:35:02.728 [info] Sent 200 in 2ms 02:35:02.728 [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 [] 02:35:02.729 [info] Sent 200 in 4ms 02:35:02.729 [info] GET /sources/4/media/2259/edit 02:35:02.729 [debug] QUERY OK source="settings" db=0.3ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.729 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2259", "source_id" => "4"} Pipelines: [:browser] 02:35:02.730 [debug] QUERY OK source="settings" db=0.3ms 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 [] 02:35:02.730 [debug] QUERY OK source="media_items" db=0.2ms idle=2.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2259] 02:35:02.730 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.730 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 02:35:02.730 [debug] QUERY OK source="settings" db=0.2ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.731 [info] GET /sources/4/media/2261 02:35:02.731 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2261", "source_id" => "4"} Pipelines: [:browser] 02:35:02.731 [debug] QUERY OK source="settings" db=0.2ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.731 [info] Sent 200 in 8ms 02:35:02.732 [info] Sent 200 in 2ms 02:35:02.732 [debug] QUERY OK source="media_items" db=1.2ms idle=1.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" = ?) [2261] 02:35:02.733 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:02.733 [debug] QUERY OK source="tasks" db=0.3ms idle=2.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2261] 02:35:02.733 [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 [] 02:35:02.733 [info] GET /sources/4/media/2261/edit 02:35:02.734 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.734 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2261", "source_id" => "4"} Pipelines: [:browser] 02:35:02.734 [info] GET /sources/4/media/2262 02:35:02.734 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2262", "source_id" => "4"} Pipelines: [:browser] 02:35:02.734 [debug] QUERY OK source="media_items" db=0.1ms idle=1.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2261] 02:35:02.734 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.734 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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" = ?) [2262] 02:35:02.735 [debug] QUERY OK source="settings" db=0.3ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.735 [debug] QUERY OK source="settings" db=0.2ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.735 [debug] QUERY OK source="tasks" db=0.2ms idle=0.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2262] 02:35:02.735 [debug] QUERY OK source="media_profiles" db=0.5ms idle=0.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] 02:35:02.735 [debug] QUERY OK source="sources" db=0.6ms idle=0.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:02.736 [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 [] 02:35:02.736 [info] Sent 200 in 5ms 02:35:02.736 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.736 [info] Sent 200 in 2ms 02:35:02.737 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.737 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.738 [info] GET /sources/4/media/2262/edit 02:35:02.738 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2262", "source_id" => "4"} Pipelines: [:browser] 02:35:02.738 [debug] QUERY OK source="media_profiles" db=0.6ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.738 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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" = ?) [2262] 02:35:02.739 [debug] QUERY OK source="settings" db=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 [] 02:35:02.739 [debug] QUERY OK source="settings" db=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.739 [info] Sent 200 in 5ms 02:35:02.739 [debug] QUERY OK source="settings" db=0.3ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.740 [info] Sent 200 in 2ms 02:35:02.876 [info] GET /sources/4/media/2264 02:35:02.877 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2264", "source_id" => "4"} Pipelines: [:browser] 02:35:02.877 [debug] QUERY OK source="media_items" db=0.1ms idle=138.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" = ?) [2264] 02:35:02.877 [debug] QUERY OK source="sources" db=0.1ms idle=138.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" = ?) [4] 02:35:02.877 [debug] QUERY OK source="tasks" db=0.1ms idle=139.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2264] 02:35:02.878 [debug] QUERY OK source="settings" db=0.0ms idle=138.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.878 [debug] QUERY OK source="settings" db=0.1ms idle=138.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.647 [notice] Handler :file_log switched from :sync to :drop mode 02:35:02.878 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.879 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.880 [info] Sent 200 in 3ms 02:35:02.921 [info] GET /sources/4/media/2264/edit 02:35:02.921 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2264", "source_id" => "4"} Pipelines: [:browser] 02:35:02.922 [debug] QUERY OK source="media_items" db=0.4ms idle=43.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" = ?) [2264] 02:35:02.922 [info] GET /sources/4/media/2266 02:35:02.922 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2266", "source_id" => "4"} Pipelines: [:browser] 02:35:02.923 [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 [] 02:35:02.923 [debug] QUERY OK source="media_items" db=0.3ms idle=43.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" = ?) [2266] 02:35:02.923 [debug] QUERY OK source="settings" db=0.3ms idle=43.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.647 [notice] Handler :file_log switched from :drop to :sync mode 02:35:02.924 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms 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" = ?) [4] 02:35:02.924 [info] GET /sources/4/media/2268/edit 02:35:02.924 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2268", "source_id" => "4"} Pipelines: [:browser] 02:35:02.924 [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 [] 02:35:02.924 [debug] QUERY OK source="tasks" db=0.1ms idle=1.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2266] 02:35:02.924 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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" = ?) [2268] 02:35:02.924 [debug] QUERY OK source="settings" db=0.2ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.925 [info] Sent 200 in 3ms 02:35:02.925 [debug] QUERY OK source="settings" db=0.3ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.925 [debug] QUERY OK source="settings" db=0.1ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.925 [debug] QUERY OK source="settings" db=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 [] 02:35:02.925 [info] GET /sources/4/media/2270 02:35:02.926 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2270", "source_id" => "4"} Pipelines: [:browser] 02:35:02.926 [debug] QUERY OK source="settings" db=0.2ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.926 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.926 [debug] QUERY OK source="media_items" db=0.2ms idle=0.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" = ?) [2270] 02:35:02.926 [debug] QUERY OK source="tasks" db=0.2ms idle=1.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2270] 02:35:02.926 [debug] QUERY OK source="sources" db=0.2ms idle=0.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:02.927 [info] Sent 200 in 2ms 02:35:02.927 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 02:35:02.927 [info] Sent 200 in 5ms 02:35:02.928 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.929 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:02.929 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:02.929 [info] GET /sources/4/media/2270/edit 02:35:02.929 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2270", "source_id" => "4"} Pipelines: [:browser] 02:35:02.930 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.930 [debug] QUERY OK source="media_items" db=0.3ms idle=2.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2270] 02:35:02.930 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.930 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.931 [info] Sent 200 in 5ms 02:35:02.931 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:02.932 [info] Sent 200 in 2ms 02:35:02.953 [info] GET /sources/4/media/2266/edit 02:35:02.953 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2266", "source_id" => "4"} Pipelines: [:browser] 02:35:02.954 [debug] QUERY OK source="media_items" db=0.3ms idle=24.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" = ?) [2266] 02:35:02.954 [debug] QUERY OK source="settings" db=0.0ms idle=24.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.954 [debug] QUERY OK source="settings" db=0.0ms idle=24.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.955 [debug] QUERY OK source="settings" db=0.0ms idle=24.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.955 [info] Sent 200 in 2ms 02:35:02.963 [info] GET /sources/4/media/2268 02:35:02.963 [info] GET /media/df122513-c542-4d00-ae18-8cf8332afdc7/stream 02:35:02.963 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2268", "source_id" => "4"} Pipelines: [:browser] 02:35:02.963 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "df122513-c542-4d00-ae18-8cf8332afdc7", "v" => "1792206202"} Pipelines: [:maybe_basic_auth] 02:35:02.963 [info] GET /media/d59d19d2-ff42-4480-a5b2-3e08785affbf/stream 02:35:02.963 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "d59d19d2-ff42-4480-a5b2-3e08785affbf", "v" => "1792288817"} Pipelines: [:maybe_basic_auth] 02:35:02.963 [info] GET /sources/4/media/50466/force_download 02:35:02.964 [debug] QUERY OK source="media_items" db=0.3ms queue=0.2ms idle=32.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["d59d19d2-ff42-4480-a5b2-3e08785affbf"] 02:35:02.964 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=9.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["df122513-c542-4d00-ae18-8cf8332afdc7"] 02:35:02.964 [debug] QUERY OK source="settings" db=0.5ms idle=9.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.964 [debug] QUERY OK source="media_items" db=0.8ms 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 WHERE (m0."id" = ?) [2268] 02:35:02.964 [debug] QUERY OK source="settings" db=0.1ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.965 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:02.965 [info] GET /media_profiles/new 02:35:02.965 [info] GET /sources/4/media/50466 02:35:02.965 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{} Pipelines: [:browser] 02:35:02.965 [debug] Invalid range request for media item: d59d19d2-ff42-4480-a5b2-3e08785affbf - serving full file 02:35:02.965 [debug] Invalid range request for media item: df122513-c542-4d00-ae18-8cf8332afdc7 - serving full file 02:35:02.965 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50466", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 02:35:02.965 [info] Sent 200 in 2ms 02:35:02.965 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=0.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2268] 02:35:02.965 [debug] QUERY OK source="settings" db=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 [] 02:35:02.966 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:02.965 [info] Sent 200 in 1ms 02:35:02.966 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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" = ?) [50466] 02:35:02.966 [debug] QUERY OK source="settings" db=0.3ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.965 [error] #PID<0.90218.0> running PinchflatWeb.Endpoint (connection #PID<0.90217.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/50466/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/50466/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90217.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50466/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47202}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90218.0>, params: %{}, path_info: ["sources", "4", "media", "50466", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk"}, {"host", "pinchflat.moozuk.net"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"}, {"x-forwarded-for", "103.4.250.19"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "103.4.250.19"} ], request_path: "/sources/4/media/50466/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_FI1UwJ9WYQcACWlB"} ], 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.90217.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50466/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47202}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPHk", "host" => "pinchflat.moozuk.net", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "x-forwarded-for" => "103.4.250.19", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "103.4.250.19" }, 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/4/media/50466/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90217.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50466/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47202}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYTzNxbTBuY3FUVzZjWkV1RTltbzBld3ZE.lXVH-Y1jsgfcQ4LFb8evGbmJQnZgAaB4AOZHphvLPH (truncated) 02:35:02.967 [debug] QUERY OK source="settings" db=0.2ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.967 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=0.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50466] 02:35:02.967 [info] GET /media_profiles/1/ 02:35:02.967 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.967 [debug] QUERY OK source="sources" db=0.5ms idle=0.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:35:02.967 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.967 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 02:35:02.968 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=0.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" = ?) [16327] 02:35:02.967 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.968 [debug] QUERY OK source="settings" db=0.9ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.969 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.969 [debug] QUERY OK source="settings" db=0.5ms 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 [] 02:35:02.969 [debug] QUERY OK source="settings" db=0.5ms 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 [] 02:35:02.970 [info] Sent 200 in 7ms 02:35:02.970 [debug] QUERY OK source="settings" db=1.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 [] 02:35:02.971 [info] Sent 200 in 6ms 02:35:02.971 [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 [] 02:35:02.972 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.974 [info] Sent 200 in 8ms 02:35:02.974 [info] GET /media_profiles/1/edit 02:35:02.974 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 02:35:02.974 [debug] QUERY OK source="media_profiles" db=0.1ms 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" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.975 [debug] QUERY OK source="media_profiles" db=0.8ms queue=6.1ms idle=0.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 WHERE (m0."id" = ?) [1] 02:35:02.975 [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 [] 02:35:02.975 [debug] QUERY OK source="sources" db=0.2ms idle=3.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 02:35:02.976 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.977 [debug] QUERY OK source="settings" db=1.2ms queue=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.978 [debug] QUERY OK source="settings" db=1.0ms queue=0.8ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.978 [info] GET /sources/4/media/2272 02:35:02.978 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.978 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.979 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2272", "source_id" => "4"} Pipelines: [:browser] 02:35:02.980 [info] Sent 200 in 13ms 02:35:02.981 [info] Sent 200 in 6ms 02:35:02.981 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=3.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2272] 02:35:02.982 [debug] QUERY OK source="tasks" db=0.5ms idle=4.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2272] 02:35:02.982 [debug] QUERY OK source="sources" db=0.8ms 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" = ?) [4] 02:35:02.983 [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 [] 02:35:02.983 [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 [] 02:35:02.984 [debug] QUERY OK source="settings" db=0.3ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.985 [debug] QUERY OK source="media_profiles" db=0.4ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:02.985 [info] GET /sources/6/media/50411/edit 02:35:02.985 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50411", "source_id" => "6"} Pipelines: [:browser] 02:35:02.986 [info] Sent 200 in 7ms 02:35:02.986 [debug] QUERY OK source="media_items" db=0.5ms idle=3.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" = ?) [50411] 02:35:02.987 [debug] QUERY OK source="settings" db=0.2ms queue=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 [] 02:35:02.988 [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 [] 02:35:02.988 [info] GET /download_logs 02:35:02.988 [debug] Processing with PinchflatWeb.Settings.SettingController.download_logs/2 Parameters: %{} Pipelines: [:browser] 02:35:02.989 [info] Sent 200 in 730µs 02:35:02.989 [debug] QUERY OK source="settings" db=0.4ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:02.991 [info] Sent 200 in 5ms 02:35:03.116 [info] GET /sources/6/media/42082/edit 02:35:03.116 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "42082", "source_id" => "6"} Pipelines: [:browser] 02:35:03.116 [info] GET /sources/3/media/37712 02:35:03.116 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "37712", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 02:35:03.117 [debug] QUERY OK source="media_items" db=0.4ms idle=131.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" = ?) [42082] 02:35:03.117 [debug] QUERY OK source="media_items" db=0.5ms idle=130.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" = ?) [37712] 02:35:03.117 [debug] QUERY OK source="settings" db=0.1ms idle=129.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.118 [debug] QUERY OK source="tasks" db=0.2ms idle=129.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [37712] 02:35:03.118 [debug] QUERY OK source="sources" db=0.2ms idle=0.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:35:03.118 [debug] QUERY OK source="settings" db=0.2ms idle=128.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.118 [debug] QUERY OK source="settings" db=0.2ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.118 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=0.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 (?,?,?,?)) [14777, 15300, 15838, 16324] 02:35:03.119 [info] Sent 200 in 3ms 02:35:03.121 [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 [] 02:35:03.121 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.122 [debug] QUERY OK source="settings" db=0.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 [] 02:35:03.123 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:03.125 [info] Sent 200 in 8ms 02:35:03.134 [info] GET /sources/3/media/47311 02:35:03.134 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47311", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 02:35:03.135 [debug] QUERY OK source="media_items" db=0.2ms idle=15.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" = ?) [47311] 02:35:03.135 [debug] QUERY OK source="tasks" db=0.1ms idle=14.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47311] 02:35:03.135 [debug] QUERY OK source="sources" db=0.2ms idle=13.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:35:03.136 [debug] QUERY OK source="oban_jobs" db=0.7ms idle=13.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 (?,?,?,?,?,?,?,?,?,?)) [15755, 16007, 16044, 16109, 16149, 16183, 16214, 16245, 16287, 16325] 02:35:03.137 [debug] QUERY OK source="settings" db=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 [] 02:35:03.137 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:03.137 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.138 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:03.140 [info] Sent 200 in 6ms 02:35:03.190 [info] GET /sources/7/media/32741 02:35:03.190 [info] GET /sources/3/media/2905/edit 02:35:03.190 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32741", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 02:35:03.190 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2905", "source_id" => "3"} Pipelines: [:browser] 02:35:03.191 [debug] QUERY OK source="media_items" db=0.4ms 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 WHERE (m0."id" = ?) [2905] 02:35:03.191 [debug] QUERY OK source="media_items" db=0.4ms 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 WHERE (m0."id" = ?) [32741] 02:35:03.191 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=54.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.192 [debug] QUERY OK source="tasks" db=0.2ms idle=54.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32741] 02:35:03.192 [debug] QUERY OK source="sources" db=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" = ?) [7] 02:35:03.192 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.193 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=1.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15089, 15575, 16074] 02:35:03.193 [debug] QUERY OK source="settings" db=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 [] 02:35:03.193 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.193 [info] Sent 200 in 3ms 02:35:03.194 [debug] QUERY OK source="settings" db=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 [] 02:35:03.194 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:03.194 [debug] QUERY OK source="media_profiles" db=0.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] 02:35:03.196 [info] Sent 200 in 5ms 02:35:03.206 [info] GET /sources/7/media/32687 02:35:03.206 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32687", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 02:35:03.206 [info] GET /sources/7/media/33193/edit 02:35:03.206 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "33193", "source_id" => "7"} Pipelines: [:browser] 02:35:03.207 [debug] QUERY OK source="media_items" db=0.3ms idle=13.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" = ?) [33193] 02:35:03.207 [debug] QUERY OK source="media_items" db=0.4ms 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 WHERE (m0."id" = ?) [32687] 02:35:03.207 [info] GET /sources/7/media/32682 02:35:03.208 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32682", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 02:35:03.208 [debug] QUERY OK source="sources" db=0.3ms idle=12.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:35:03.208 [debug] QUERY OK source="tasks" db=0.5ms idle=13.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32687] 02:35:03.208 [debug] QUERY OK source="settings" db=0.4ms idle=13.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.208 [debug] QUERY OK source="media_items" db=0.2ms idle=0.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" = ?) [32682] 02:35:03.208 [debug] QUERY OK source="settings" db=0.2ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.208 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=0.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15088, 15574, 16073] 02:35:03.208 [debug] QUERY OK source="sources" db=0.3ms idle=0.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:35:03.208 [debug] QUERY OK source="tasks" db=0.3ms idle=0.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32682] 02:35:03.209 [debug] QUERY OK source="settings" db=0.1ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.209 [debug] QUERY OK source="settings" db=0.1ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.209 [info] Sent 200 in 2ms 02:35:03.209 [debug] QUERY OK source="settings" db=0.1ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.209 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=0.4ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15087, 15573, 16072] 02:35:03.210 [debug] QUERY OK source="settings" db=0.2ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.210 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.210 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:03.211 [debug] QUERY OK source="settings" db=0.3ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:03.211 [info] Sent 200 in 5ms 02:35:03.212 [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 [] 02:35:03.213 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:35:03.214 [info] Sent 200 in 6ms 02:35:03.227 [info] GET /media/cb342240-3ac0-4e80-b6e2-dc3d06fa7a88/stream 02:35:03.227 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "cb342240-3ac0-4e80-b6e2-dc3d06fa7a88", "v" => "1792206236"} Pipelines: [:maybe_basic_auth] 02:35:03.227 [debug] QUERY OK source="media_items" db=0.3ms 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 WHERE (m0."uuid" = ?) ["cb342240-3ac0-4e80-b6e2-dc3d06fa7a88"] 02:35:03.228 [debug] Invalid range request for media item: cb342240-3ac0-4e80-b6e2-dc3d06fa7a88 - serving full file 02:35:03.228 [info] Sent 200 in 885µs 02:35:07.564 [info] GET / 02:35:07.564 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:35:07.564 [debug] QUERY OK source="settings" db=0.1ms idle=937.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:07.564 [debug] QUERY OK source="media_profiles" db=0.0ms idle=937.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:35:07.565 [debug] QUERY OK source="sources" db=0.0ms idle=938.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:35:07.567 [debug] QUERY OK source="media_items" db=2.0ms idle=938.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:07.568 [debug] QUERY OK source="media_items" db=0.9ms idle=651.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:07.568 [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 [] 02:35:07.568 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:07.569 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:07.569 [debug] QUERY OK source="tasks" db=0.0ms idle=2.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"] 02:35:07.570 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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)) [] 02:35:07.571 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:07.571 [debug] QUERY OK source="sources" db=0.0ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:35:07.574 [debug] QUERY OK source="media_items" db=1.8ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 02:35:07.575 [debug] QUERY OK source="media_items" db=0.8ms idle=4.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:07.575 [debug] QUERY OK source="sources" db=0.1ms idle=4.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:35:07.576 [info] Sent 200 in 11ms 02:35:09.032 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:35:25.626 [info] GET / 02:35:25.626 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:35:25.626 [debug] QUERY OK source="settings" db=0.1ms idle=999.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:25.627 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.0e3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:35:25.627 [debug] QUERY OK source="sources" db=0.0ms idle=1000.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:35:25.629 [debug] QUERY OK source="media_items" db=1.8ms idle=1000.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:25.630 [debug] QUERY OK source="media_items" db=0.9ms idle=695.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:25.630 [debug] QUERY OK source="settings" db=0.0ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:25.630 [debug] QUERY OK source="settings" db=0.0ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:25.631 [debug] QUERY OK source="settings" db=0.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 [] 02:35:25.631 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:35:25.632 [debug] QUERY OK source="media_items" db=0.9ms idle=1.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)) [] 02:35:25.633 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:25.633 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:35:25.636 [debug] QUERY OK source="media_items" db=2.0ms idle=3.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"))) [] 02:35:25.637 [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 INNER JOIN "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] 02:35:25.638 [debug] QUERY OK source="sources" db=0.2ms idle=4.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:35:25.638 [info] Sent 200 in 12ms 02:35:25.763 [info] GET / 02:35:25.763 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:35:25.763 [debug] QUERY OK source="settings" db=0.1ms idle=130.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:25.764 [debug] QUERY OK source="media_profiles" db=0.0ms idle=130.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:35:25.764 [debug] QUERY OK source="sources" db=0.0ms idle=127.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:35:25.766 [debug] QUERY OK source="media_items" db=2.0ms idle=126.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:25.767 [debug] QUERY OK source="media_items" db=1.0ms idle=128.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:25.767 [debug] QUERY OK source="settings" db=0.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 [] 02:35:25.767 [debug] QUERY OK source="settings" db=0.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 [] 02:35:25.768 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:25.768 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:35:25.770 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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)) [] 02:35:25.770 [debug] QUERY OK source="media_items" db=0.1ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:25.770 [debug] QUERY OK source="sources" db=0.0ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:35:25.773 [debug] QUERY OK source="media_items" db=2.2ms idle=3.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"))) [] 02:35:25.774 [debug] QUERY OK source="media_items" db=0.8ms idle=5.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:25.775 [debug] QUERY OK source="sources" db=0.1ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:35:25.775 [info] Sent 200 in 12ms 02:35:26.618 [info] GET /console/ 02:35:26.618 [debug] QUERY OK source="settings" db=0.3ms idle=847.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:26.619 [debug] QUERY OK source="settings" db=0.1ms idle=845.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:26.619 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:26.619 [error] #PID<0.90285.0> running PinchflatWeb.Endpoint (connection #PID<0.90284.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /console/ ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /console (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90284.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37036}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90285.0>, params: %{}, path_info: ["console"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/console/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Gg883DCq-gcAAz6D"} ], 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.90284.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37036}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /console (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90284.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37036}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90285.0>, params: %{}, path_info: ["console"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/console/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Gg883DCq-gcAAz6D"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, (truncated) 02:35:26.770 [info] GET /console/ 02:35:26.770 [debug] QUERY OK source="settings" db=0.1ms idle=995.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:26.770 [debug] QUERY OK source="settings" db=0.0ms idle=995.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:26.771 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:26.771 [error] #PID<0.90287.0> running PinchflatWeb.Endpoint (connection #PID<0.90286.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /console/ ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /console (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90286.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37050}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90287.0>, params: %{}, path_info: ["console"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/console/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GhhLR9lXwScAAz6j"} ], 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.90286.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37050}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /console (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90286.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37050}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90287.0>, params: %{}, path_info: ["console"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/console/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GhhLR9lXwScAAz6j"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.R (truncated) 02:35:27.621 [info] GET /server 02:35:27.621 [debug] QUERY OK source="settings" db=0.2ms 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 [] 02:35:27.621 [debug] QUERY OK source="settings" db=0.1ms idle=1002.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:27.621 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:27.622 [error] #PID<0.90289.0> running PinchflatWeb.Endpoint (connection #PID<0.90288.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /server ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90288.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45480}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90289.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GksBHusa6YAAAz7D"} ], 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.90288.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45480}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /server (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90288.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45480}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90289.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GksBHusa6YAAAz7D"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"de (truncated) 02:35:27.764 [info] GET /server 02:35:27.764 [debug] QUERY OK source="settings" db=0.1ms idle=993.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:27.764 [debug] QUERY OK source="settings" db=0.0ms idle=993.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:27.764 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:27.764 [error] #PID<0.90291.0> running PinchflatWeb.Endpoint (connection #PID<0.90290.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /server ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90290.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45490}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90291.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GlOG7Tk2eQEACWwh"} ], 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.90290.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45490}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /server (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90290.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45490}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90291.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GlOG7Tk2eQEACWwh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, (truncated) 02:35:28.626 [info] GET /server-status 02:35:28.627 [debug] QUERY OK source="settings" db=0.1ms idle=862.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:28.627 [debug] QUERY OK source="settings" db=0.0ms idle=862.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:28.627 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:28.627 [error] #PID<0.90293.0> running PinchflatWeb.Endpoint (connection #PID<0.90292.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /server-status ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server-status (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90292.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45494}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90293.0>, params: %{}, path_info: ["server-status"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GobzRuBnq7gAAz7j"} ], 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.90292.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45494}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /server-status (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90292.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45494}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90293.0>, params: %{}, path_info: ["server-status"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GobzRuBnq7gAAz7j"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, (truncated) 02:35:28.768 [info] GET /server-status 02:35:28.769 [debug] QUERY OK source="settings" db=0.1ms idle=832.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:28.769 [debug] QUERY OK source="settings" db=0.1ms idle=142.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:28.769 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:28.770 [error] #PID<0.90295.0> running PinchflatWeb.Endpoint (connection #PID<0.90294.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /server-status ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server-status (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90294.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45506}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90295.0>, params: %{}, path_info: ["server-status"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Go9si6CWNDcAAz8D"} ], 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.90294.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45506}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /server-status (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90294.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45506}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90295.0>, params: %{}, path_info: ["server-status"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Go9si6CWNDcAAz8D"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, (truncated) 02:35:29.611 [info] GET /about 02:35:29.612 [debug] QUERY OK source="settings" db=0.3ms idle=984.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:29.612 [debug] QUERY OK source="settings" db=0.1ms idle=985.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:29.612 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:29.612 [error] #PID<0.90297.0> running PinchflatWeb.Endpoint (connection #PID<0.90296.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /about ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /about (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90296.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45514}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90297.0>, params: %{}, path_info: ["about"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GsGqNA95TJYAAz8j"} ], 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.90296.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45514}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /about (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90296.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45514}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90297.0>, params: %{}, path_info: ["about"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GsGqNA95TJYAAz8j"} ], 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 (truncated) 02:35:29.797 [info] GET /about 02:35:29.798 [debug] QUERY OK source="settings" db=0.1ms idle=1028.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:29.798 [debug] QUERY OK source="settings" db=0.0ms idle=1028.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:29.798 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:29.798 [error] #PID<0.90299.0> running PinchflatWeb.Endpoint (connection #PID<0.90298.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /about ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /about (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90298.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45528}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90299.0>, params: %{}, path_info: ["about"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GszA1CMiiz8AAz9D"} ], 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.90298.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45528}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /about (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90298.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45528}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90299.0>, params: %{}, path_info: ["about"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GszA1CMiiz8AAz9D"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, (truncated) 02:35:30.615 [info] GET /login.action 02:35:30.616 [debug] QUERY OK source="settings" db=0.1ms idle=1003.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:30.616 [debug] QUERY OK source="settings" db=0.1ms idle=1003.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:30.616 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:30.616 [error] #PID<0.90301.0> running PinchflatWeb.Endpoint (connection #PID<0.90300.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /login.action ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90300.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45536}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90301.0>, params: %{}, path_info: ["login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Gv2DFGaiZjkACWxB"} ], 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.90300.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45536}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90300.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45536}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90301.0>, params: %{}, path_info: ["login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Gv2DFGaiZjkACWxB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, (truncated) 02:35:30.757 [info] GET /login.action 02:35:30.758 [debug] QUERY OK source="settings" db=0.1ms idle=959.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:30.758 [debug] QUERY OK source="settings" db=0.0ms idle=959.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:30.758 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:30.758 [error] #PID<0.90303.0> running PinchflatWeb.Endpoint (connection #PID<0.90302.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /login.action ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90302.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45548}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90303.0>, params: %{}, path_info: ["login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GwX15m-KaQ4AAz9j"} ], 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.90302.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45548}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90302.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45548}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90303.0>, params: %{}, path_info: ["login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_GwX15m-KaQ4AAz9j"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ (truncated) 02:35:31.625 [info] GET / 02:35:31.625 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:35:31.626 [debug] QUERY OK source="settings" db=0.4ms idle=1009.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:31.626 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1009.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:35:31.626 [debug] QUERY OK source="sources" db=0.0ms idle=868.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:35:31.628 [debug] QUERY OK source="media_items" db=1.7ms idle=868.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:31.629 [debug] QUERY OK source="media_items" db=1.0ms idle=689.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:31.629 [debug] QUERY OK source="settings" db=0.0ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:31.630 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:31.630 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:31.631 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:35:31.632 [debug] QUERY OK source="media_items" db=0.8ms idle=1.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)) [] 02:35:31.632 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:31.632 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:35:31.635 [debug] QUERY OK source="media_items" db=1.9ms idle=2.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"))) [] 02:35:31.636 [debug] QUERY OK source="media_items" db=0.9ms idle=4.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 02:35:31.636 [debug] QUERY OK source="sources" db=0.1ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:35:31.637 [info] Sent 200 in 12ms 02:35:31.769 [info] GET / 02:35:31.770 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:35:31.770 [debug] QUERY OK source="settings" db=0.2ms 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 [] 02:35:31.770 [debug] QUERY OK source="media_profiles" db=0.1ms idle=137.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:35:31.770 [debug] QUERY OK source="sources" db=0.0ms idle=135.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:35:31.772 [debug] QUERY OK source="media_items" db=1.8ms idle=134.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:31.773 [debug] QUERY OK source="media_items" db=1.0ms idle=136.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:31.774 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:31.774 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:31.774 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:31.775 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:35:31.776 [debug] QUERY OK source="media_items" db=0.8ms idle=1.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)) [] 02:35:31.776 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:31.776 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:35:31.779 [debug] QUERY OK source="media_items" db=1.7ms idle=2.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"))) [] 02:35:31.780 [debug] QUERY OK source="media_items" db=0.8ms idle=4.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] 02:35:31.780 [debug] QUERY OK source="sources" db=0.1ms idle=4.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:35:31.781 [info] Sent 200 in 11ms 02:35:31.943 [info] GET /___proxy_subdomain_whm/login 02:35:31.944 [debug] QUERY OK source="settings" db=0.4ms idle=167.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:31.944 [debug] QUERY OK source="settings" db=0.1ms idle=165.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:31.944 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:31.945 [error] #PID<0.90309.0> running PinchflatWeb.Endpoint (connection #PID<0.90308.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /___proxy_subdomain_whm/login ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_whm/login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90308.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45582}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90309.0>, params: %{}, path_info: ["___proxy_subdomain_whm", "login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/___proxy_subdomain_whm/login", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G0ynllsdU0kAA0CD"} ], 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.90308.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45582}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /___proxy_subdomain_whm/login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90308.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45582}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90309.0>, params: %{}, path_info: ["___proxy_subdomain_whm", "login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/___proxy_subdomain_whm/login", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G0ynllsdU0kAA0CD"} ], scheme: :http, script_name: [], (truncated) 02:35:32.258 [info] GET /___proxy_subdomain_whm/login 02:35:32.259 [debug] QUERY OK source="settings" db=0.1ms idle=478.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:32.259 [debug] QUERY OK source="settings" db=0.1ms idle=478.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:32.259 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:32.259 [error] #PID<0.90311.0> running PinchflatWeb.Endpoint (connection #PID<0.90310.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /___proxy_subdomain_whm/login ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_whm/login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90310.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45592}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90311.0>, params: %{}, path_info: ["___proxy_subdomain_whm", "login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/___proxy_subdomain_whm/login", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G19u9vQZ3soAA0Cj"} ], 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.90310.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45592}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /___proxy_subdomain_whm/login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90310.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45592}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90311.0>, params: %{}, path_info: ["___proxy_subdomain_whm", "login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/___proxy_subdomain_whm/login", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G19u9vQZ3soAA0Cj"} ], scheme: :http, (truncated) 02:35:32.292 [info] GET /___proxy_subdomain_cpanel 02:35:32.292 [debug] QUERY OK source="settings" db=0.1ms idle=351.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:32.292 [debug] QUERY OK source="settings" db=0.0ms idle=348.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:32.292 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:32.293 [error] #PID<0.90313.0> running PinchflatWeb.Endpoint (connection #PID<0.90312.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /___proxy_subdomain_cpanel ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_cpanel (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90312.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45608}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90313.0>, params: %{}, path_info: ["___proxy_subdomain_cpanel"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/___proxy_subdomain_cpanel", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G2FrGKN-5OUAA0DD"} ], 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.90312.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45608}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /___proxy_subdomain_cpanel (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90312.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45608}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90313.0>, params: %{}, path_info: ["___proxy_subdomain_cpanel"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/___proxy_subdomain_cpanel", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G2FrGKN-5OUAA0DD"} ], scheme: :http, script_name: [], secret_key_base: :..., (truncated) 02:35:32.672 [info] GET /v2/_catalog 02:35:32.673 [info] Sent 404 in 211µs 02:35:32.673 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:32.703 [info] GET /___proxy_subdomain_cpanel 02:35:32.704 [debug] QUERY OK source="settings" db=0.1ms idle=759.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:32.704 [debug] QUERY OK source="settings" db=0.0ms idle=444.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:32.704 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:32.704 [error] #PID<0.90317.0> running PinchflatWeb.Endpoint (connection #PID<0.90316.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /___proxy_subdomain_cpanel ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_cpanel (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90316.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45620}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90317.0>, params: %{}, path_info: ["___proxy_subdomain_cpanel"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/___proxy_subdomain_cpanel", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G3nyZ2DzfXIAA0ED"} ], 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.90316.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45620}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /___proxy_subdomain_cpanel (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90316.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45620}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90317.0>, params: %{}, path_info: ["___proxy_subdomain_cpanel"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/___proxy_subdomain_cpanel", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G3nyZ2DzfXIAA0ED"} ], scheme: :http, script_name: [], secret_ke (truncated) 02:35:33.161 [info] GET /v2/_catalog 02:35:33.161 [info] Sent 404 in 203µs 02:35:33.161 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:33.657 [info] GET /.DS_Store 02:35:33.658 [debug] QUERY OK source="settings" db=0.1ms idle=953.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:33.658 [debug] QUERY OK source="settings" db=0.1ms idle=954.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:33.658 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:33.658 [error] #PID<0.90321.0> running PinchflatWeb.Endpoint (connection #PID<0.90320.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.DS_Store ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90320.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45640}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90321.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G7LQoFZ-3pkACW0B"} ], 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.90320.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45640}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90320.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45640}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90321.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G7LQoFZ-3pkACW0B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/pho (truncated) 02:35:34.206 [info] GET /.DS_Store 02:35:34.207 [debug] QUERY OK source="settings" db=0.5ms idle=579.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:34.207 [debug] QUERY OK source="settings" db=0.0ms idle=580.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:34.207 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:34.207 [error] #PID<0.90323.0> running PinchflatWeb.Endpoint (connection #PID<0.90322.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.DS_Store ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90322.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45656}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90323.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G9OJyvpD8-AACW0h"} ], 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.90322.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45656}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90322.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45656}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90323.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_G9OJyvpD8-AACW0h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, (truncated) 02:35:35.168 [info] GET /.env 02:35:35.168 [debug] QUERY OK source="settings" db=0.2ms idle=1510.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:35.169 [debug] QUERY OK source="settings" db=0.0ms idle=1226.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:35.169 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:35.169 [error] #PID<0.90325.0> running PinchflatWeb.Endpoint (connection #PID<0.90324.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.env ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90324.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45658}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90325.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HAzaWK2fhA4ACW1B"} ], 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.90324.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45658}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90324.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45658}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90325.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HAzaWK2fhA4ACW1B"} ], 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 (truncated) 02:35:37.156 [info] GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application 02:35:37.157 [debug] QUERY OK source="settings" db=0.1ms idle=1530.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:37.157 [debug] QUERY OK source="settings" db=0.0ms idle=1213.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:37.157 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:37.158 [error] #PID<0.90327.0> running PinchflatWeb.Endpoint (connection #PID<0.90326.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90326.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45668}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90327.0>, params: %{}, path_info: ["ecp", "Current", "exporttool", "microsoft.exchange.ediscovery.exporttool"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HINkMQfz4-kAA0Ej"} ], 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.90326.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45668}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90326.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45668}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90327.0>, params: %{}, path_info: ["ecp", "Current", "exporttool", "microsoft.exchange.ediscovery.exporttool"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, (truncated) 02:35:38.669 [info] GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application 02:35:38.670 [debug] QUERY OK source="settings" db=0.1ms idle=723.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:38.670 [debug] QUERY OK source="settings" db=0.0ms idle=43.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:38.670 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:38.670 [error] #PID<0.90331.0> running PinchflatWeb.Endpoint (connection #PID<0.90330.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90330.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49692}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90331.0>, params: %{}, path_info: ["ecp", "Current", "exporttool", "microsoft.exchange.ediscovery.exporttool"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HN2P4hC0_JcACW1h"} ], 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.90330.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49692}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90330.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49692}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90331.0>, params: %{}, path_info: ["ecp", "Current", "exporttool", "microsoft.exchange.ediscovery.exporttool"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded- (truncated) 02:35:39.033 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:35:39.155 [info] GET /.git/config 02:35:39.155 [debug] QUERY OK source="settings" db=0.1ms idle=528.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:39.156 [debug] QUERY OK source="settings" db=0.1ms idle=485.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:39.156 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:39.156 [error] #PID<0.90333.0> running PinchflatWeb.Endpoint (connection #PID<0.90332.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.git/config ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.git/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90332.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49698}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90333.0>, params: %{}, path_info: [".git", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HPqARb7NHjEAA0Fj"} ], 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.90332.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49698}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /.git/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90332.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49698}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90333.0>, params: %{}, path_info: [".git", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HPqARb7NHjEAA0Fj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404 (truncated) 02:35:39.250 [info] GET / 02:35:39.250 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:35:39.251 [debug] QUERY OK source="settings" db=0.1ms idle=580.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:39.251 [debug] QUERY OK source="media_profiles" db=0.0ms idle=303.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:35:39.251 [debug] QUERY OK source="sources" db=0.1ms idle=217.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:35:39.253 [debug] QUERY OK source="media_items" db=1.8ms idle=95.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:39.254 [debug] QUERY OK source="media_items" db=1.0ms idle=97.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:39.254 [debug] QUERY OK source="settings" db=0.0ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:39.255 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:39.255 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:39.255 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:35:39.257 [debug] QUERY OK source="media_items" db=0.9ms idle=1.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)) [] 02:35:39.257 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:39.258 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:35:39.260 [debug] QUERY OK source="media_items" db=1.8ms idle=3.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"))) [] 02:35:39.261 [debug] QUERY OK source="media_items" db=0.9ms idle=4.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:39.261 [debug] QUERY OK source="sources" db=0.1ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:35:39.262 [info] Sent 200 in 11ms 02:35:40.175 [info] POST /graphql 02:35:40.175 [info] Sent 404 in 248µs 02:35:40.175 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:40.677 [info] POST /api 02:35:40.677 [info] Sent 404 in 250µs 02:35:40.677 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:40.713 [info] GET /.git/config 02:35:40.714 [debug] QUERY OK source="settings" db=0.1ms idle=765.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:40.714 [debug] QUERY OK source="settings" db=0.0ms idle=87.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:40.714 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:40.715 [error] #PID<0.90341.0> running PinchflatWeb.Endpoint (connection #PID<0.90340.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.git/config ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.git/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90340.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49752}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90341.0>, params: %{}, path_info: [".git", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HVdmsOX0wgQAA0Ij"} ], 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.90340.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49752}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /.git/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90340.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49752}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90341.0>, params: %{}, path_info: [".git", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HVdmsOX0wgQAA0Ij"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ (truncated) 02:35:41.126 [info] POST /api/graphql 02:35:41.127 [info] Sent 404 in 295µs 02:35:41.127 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:41.570 [info] POST /graphql/api 02:35:41.570 [info] Sent 404 in 249µs 02:35:41.570 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:41.708 [info] POST /graphql 02:35:41.708 [info] Sent 404 in 278µs 02:35:41.708 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:42.016 [info] POST /api/gql 02:35:42.016 [info] Sent 404 in 244µs 02:35:42.016 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:42.027 [info] POST /api 02:35:42.027 [info] Sent 404 in 287µs 02:35:42.027 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:42.393 [info] POST /api/graphql 02:35:42.393 [info] Sent 404 in 295µs 02:35:42.393 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:42.468 [info] GET /s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties 02:35:42.468 [debug] QUERY OK source="settings" db=0.2ms idle=1841.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:42.469 [debug] QUERY OK source="settings" db=0.0ms idle=1754.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:42.469 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:42.469 [error] #PID<0.90355.0> running PinchflatWeb.Endpoint (connection #PID<0.90354.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90354.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49798}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90355.0>, params: %{}, path_info: ["s", "231323e2638313e293e2031313", "_", ";", "META-INF", "maven", "com.atlassian.jira", "jira-webapp-dist", "pom"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Hb_6Mn_O6G4AA0MD"} ], 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.90354.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49798}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90354.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49798}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90355.0>, params: %{}, path_info: ["s", "231323e2638313e293e2031313", "_", ";", "META-INF", "maven", "com.atlassian.jira", "jira-webapp-dist", "pom"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "p (truncated) 02:35:42.704 [info] POST /graphql/api 02:35:42.704 [info] Sent 404 in 271µs 02:35:42.704 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:43.003 [info] POST /api/gql 02:35:43.003 [info] Sent 404 in 284µs 02:35:43.003 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:43.310 [info] GET /s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties 02:35:43.311 [debug] QUERY OK source="settings" db=0.1ms idle=842.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:43.311 [debug] QUERY OK source="settings" db=0.0ms idle=842.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:43.311 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:43.311 [error] #PID<0.90361.0> running PinchflatWeb.Endpoint (connection #PID<0.90360.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90360.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49832}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90361.0>, params: %{}, path_info: ["s", "231323e2638313e293e2031313", "_", ";", "META-INF", "maven", "com.atlassian.jira", "jira-webapp-dist", "pom"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HfIu55H9t0sAA0Nj"} ], 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.90360.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49832}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90360.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/231323e2638313e293e2031313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49832}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90361.0>, params: %{}, path_info: ["s", "231323e2638313e293e2031313", "_", ";", "META-INF", "maven", "com.atlassian.jira", "jira-webapp-dist", "pom"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.ne (truncated) 02:35:43.475 [info] GET /config.json 02:35:43.476 [debug] QUERY OK source="settings" db=0.1ms idle=849.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:43.476 [debug] QUERY OK source="settings" db=0.0ms idle=849.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:43.476 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:43.476 [error] #PID<0.90363.0> running PinchflatWeb.Endpoint (connection #PID<0.90362.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /config.json ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90362.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49840}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90363.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HfwE3bIHnhMAA0OD"} ], 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.90362.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49840}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90362.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49840}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90363.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HfwE3bIHnhMAA0OD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ { (truncated) 02:35:44.358 [info] GET /config.json 02:35:44.358 [debug] QUERY OK source="settings" db=0.1ms idle=1047.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:44.358 [debug] QUERY OK source="settings" db=0.0ms idle=1047.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:44.358 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:44.359 [error] #PID<0.90365.0> running PinchflatWeb.Endpoint (connection #PID<0.90364.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /config.json ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90364.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49842}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90365.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HjCcD9mMeNgAA0Oj"} ], 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.90364.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49842}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90364.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49842}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90365.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HjCcD9mMeNgAA0Oj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, : (truncated) 02:35:44.463 [info] GET /telescope/requests 02:35:44.464 [debug] QUERY OK source="settings" db=0.1ms idle=987.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:44.464 [debug] QUERY OK source="settings" db=0.0ms idle=987.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:44.464 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:44.464 [error] #PID<0.90367.0> running PinchflatWeb.Endpoint (connection #PID<0.90366.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /telescope/requests ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /telescope/requests (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90366.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49848}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90367.0>, params: %{}, path_info: ["telescope", "requests"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Hjbm_YihadIAA0PD"} ], 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.90366.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49848}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /telescope/requests (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90366.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49848}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90367.0>, params: %{}, path_info: ["telescope", "requests"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Hjbm_YihadIAA0PD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil (truncated) 02:35:45.311 [info] GET /telescope/requests 02:35:45.312 [debug] QUERY OK source="settings" db=0.2ms idle=953.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:45.312 [debug] QUERY OK source="settings" db=0.0ms idle=953.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:45.312 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:45.312 [error] #PID<0.90369.0> running PinchflatWeb.Endpoint (connection #PID<0.90368.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /telescope/requests ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /telescope/requests (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90368.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49850}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90369.0>, params: %{}, path_info: ["telescope", "requests"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Hml1xtS6-moACW2B"} ], 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.90368.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49850}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /telescope/requests (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90368.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49850}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90369.0>, params: %{}, path_info: ["telescope", "requests"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Hml1xtS6-moACW2B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router (truncated) 02:35:45.483 [info] GET /info.php 02:35:45.483 [debug] QUERY OK source="settings" db=0.4ms 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 [] 02:35:45.484 [debug] QUERY OK source="settings" db=0.1ms idle=1019.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:45.484 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:45.484 [error] #PID<0.90371.0> running PinchflatWeb.Endpoint (connection #PID<0.90370.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /info.php ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /info (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90370.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49864}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90371.0>, params: %{}, path_info: ["info"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HnOpiMvErDMAA0Pj"} ], 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.90370.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49864}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /info (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90370.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49864}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90371.0>, params: %{}, path_info: ["info"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HnOpiMvErDMAA0Pj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call (truncated) 02:35:46.465 [info] GET /.well-known/security.txt 02:35:46.466 [debug] QUERY OK source="settings" db=0.1ms idle=1153.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:46.466 [debug] QUERY OK source="settings" db=0.0ms idle=1153.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:46.466 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:46.466 [error] #PID<0.90373.0> running PinchflatWeb.Endpoint (connection #PID<0.90372.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.well-known/security.txt ** (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/security (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90372.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49880}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90373.0>, params: %{}, path_info: [".well-known", "security"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.well-known/security.txt", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Hq48lKU1ITcAA0QD"} ], 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.90372.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49880}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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/security (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90372.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49880}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90373.0>, params: %{}, path_info: [".well-known", "security"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.well-known/security.txt", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Hq48lKU1ITcAA0QD"} ], scheme: :http, script_name: [], secret_key_base: :..., (truncated) 02:35:46.479 [info] GET /info.php 02:35:46.480 [debug] QUERY OK source="settings" db=0.2ms idle=996.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:46.480 [debug] QUERY OK source="settings" db=0.0ms idle=996.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:46.480 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:46.480 [error] #PID<0.90375.0> running PinchflatWeb.Endpoint (connection #PID<0.90374.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /info.php ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /info (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90374.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49886}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90375.0>, params: %{}, path_info: ["info"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Hq8SnJZVZoIAA0Qj"} ], 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.90374.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49886}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /info (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90374.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49886}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90375.0>, params: %{}, path_info: ["info"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Hq8SnJZVZoIAA0Qj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~ (truncated) 02:35:47.314 [info] GET /.well-known/security.txt 02:35:47.315 [debug] QUERY OK source="settings" db=0.2ms 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 [] 02:35:47.315 [debug] QUERY OK source="settings" db=0.0ms idle=848.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:47.315 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:47.315 [error] #PID<0.90377.0> running PinchflatWeb.Endpoint (connection #PID<0.90376.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.well-known/security.txt ** (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/security (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90376.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49898}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90377.0>, params: %{}, path_info: [".well-known", "security"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/.well-known/security.txt", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HuDSok9piCcAA0RD"} ], 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.90376.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49898}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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/security (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90376.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49898}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90377.0>, params: %{}, path_info: [".well-known", "security"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/.well-known/security.txt", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HuDSok9piCcAA0RD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, (truncated) 02:35:47.486 [info] GET /actuator/env 02:35:47.487 [debug] QUERY OK source="settings" db=0.1ms idle=1006.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:47.487 [debug] QUERY OK source="settings" db=0.1ms idle=1007.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:47.487 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:47.487 [error] #PID<0.90379.0> running PinchflatWeb.Endpoint (connection #PID<0.90378.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /actuator/env ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /actuator/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90378.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45312}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90379.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HusaH5Gsz-UAA0Rj"} ], 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.90378.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45312}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /actuator/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90378.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45312}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90379.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HusaH5Gsz-UAA0Rj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, s (truncated) 02:35:48.304 [info] GET /actuator/env 02:35:48.304 [debug] QUERY OK source="settings" db=0.2ms idle=989.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:48.304 [debug] QUERY OK source="settings" db=0.0ms idle=989.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:48.304 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:48.305 [error] #PID<0.90381.0> running PinchflatWeb.Endpoint (connection #PID<0.90380.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /actuator/env ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /actuator/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90380.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45320}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90381.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HxvQUMSFlI0AA0SD"} ], 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.90380.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45320}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /actuator/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90380.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45320}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90381.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HxvQUMSFlI0AA0SD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stac (truncated) 02:35:48.493 [info] GET /trace.axd 02:35:48.493 [debug] QUERY OK source="settings" db=0.1ms idle=1005.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:48.493 [debug] QUERY OK source="settings" db=0.0ms idle=1005.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:48.493 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:48.493 [error] #PID<0.90383.0> running PinchflatWeb.Endpoint (connection #PID<0.90382.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /trace.axd ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /trace (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90382.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45334}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90383.0>, params: %{}, path_info: ["trace"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/trace.axd", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HycSfScYVYYAA0Sj"} ], 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.90382.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45334}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /trace (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90382.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45334}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90383.0>, params: %{}, path_info: ["trace"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/trace.axd", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_HycSfScYVYYAA0Sj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Rou (truncated) 02:35:49.305 [info] GET /trace.axd 02:35:49.306 [debug] QUERY OK source="settings" db=0.2ms idle=1001.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:49.306 [debug] QUERY OK source="settings" db=0.1ms idle=1001.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:49.306 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:49.306 [error] #PID<0.90385.0> running PinchflatWeb.Endpoint (connection #PID<0.90384.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /trace.axd ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /trace (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90384.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45348}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90385.0>, params: %{}, path_info: ["trace"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/trace.axd", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H1eBRDjfCgYAA0TD"} ], 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.90384.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45348}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /trace (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90384.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45348}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90385.0>, params: %{}, path_info: ["trace"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/trace.axd", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H1eBRDjfCgYAA0TD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, (truncated) 02:35:49.479 [info] GET /@vite/env 02:35:49.479 [debug] QUERY OK source="settings" db=0.1ms idle=985.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:49.479 [debug] QUERY OK source="settings" db=0.0ms idle=985.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:49.479 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:49.480 [error] #PID<0.90387.0> running PinchflatWeb.Endpoint (connection #PID<0.90386.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /@vite/env ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /@vite/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90386.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45354}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90387.0>, params: %{}, path_info: ["@vite", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H2HY-lbl6isACW2h"} ], 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.90386.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45354}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /@vite/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90386.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45354}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90387.0>, params: %{}, path_info: ["@vite", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H2HY-lbl6isACW2h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ (truncated) 02:35:50.390 [info] GET /@vite/env 02:35:50.391 [debug] QUERY OK source="settings" db=0.1ms idle=1085.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:50.391 [debug] QUERY OK source="settings" db=0.1ms idle=1085.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:50.391 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:50.391 [error] #PID<0.90389.0> running PinchflatWeb.Endpoint (connection #PID<0.90388.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /@vite/env ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /@vite/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90388.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45368}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90389.0>, params: %{}, path_info: ["@vite", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H5gxR_BM83gACW3B"} ], 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.90388.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45368}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /@vite/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90388.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45368}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90389.0>, params: %{}, path_info: ["@vite", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H5gxR_BM83gACW3B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Rou (truncated) 02:35:50.486 [info] GET /.vscode/sftp.json 02:35:50.487 [debug] QUERY OK source="settings" db=0.2ms idle=1007.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:50.487 [debug] QUERY OK source="settings" db=0.0ms idle=1007.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:50.487 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:50.488 [error] #PID<0.90391.0> running PinchflatWeb.Endpoint (connection #PID<0.90390.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.vscode/sftp.json ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.vscode/sftp (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90390.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45378}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90391.0>, params: %{}, path_info: [".vscode", "sftp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H53pdI5rXx8AA0Tj"} ], 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.90390.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45378}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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 /.vscode/sftp (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90390.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45378}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, 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.moozuk.net", method: "GET", owner: #PID<0.90391.0>, params: %{}, path_info: [".vscode", "sftp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H53pdI5rXx8AA0Tj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: Pinchf (truncated) 02:35:51.399 [info] GET /.vscode/sftp.json 02:35:51.400 [debug] QUERY OK source="settings" db=0.1ms idle=1008.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:51.400 [debug] QUERY OK source="settings" db=0.0ms idle=1008.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:51.400 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:51.400 [error] #PID<0.90393.0> running PinchflatWeb.Endpoint (connection #PID<0.90392.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.vscode/sftp.json ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.vscode/sftp (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90392.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45386}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90393.0>, params: %{}, path_info: [".vscode", "sftp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H9RVyXu4FPMACW3h"} ], 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.90392.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45386}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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 /.vscode/sftp (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90392.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45386}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, 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.moozuk.net", method: "GET", owner: #PID<0.90393.0>, params: %{}, path_info: [".vscode", "sftp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H9RVyXu4FPMACW3h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, (truncated) 02:35:51.489 [info] OPTIONS / 02:35:51.490 [debug] QUERY OK source="settings" db=0.1ms idle=1002.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:51.490 [debug] QUERY OK source="settings" db=0.0ms idle=1002.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:51.490 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:51.490 [error] #PID<0.90395.0> running PinchflatWeb.Endpoint (connection #PID<0.90394.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: OPTIONS / ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for OPTIONS / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90394.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45396}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "OPTIONS", owner: #PID<0.90395.0>, params: %{}, path_info: [], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H9mxIel-ETMAA0UD"} ], 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.90394.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45396}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, method: "OPTIONS", 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 OPTIONS / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90394.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45396}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "OPTIONS", owner: #PID<0.90395.0>, params: %{}, path_info: [], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_H9mxIel-ETMAA0UD"} ], 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 (truncated) 02:35:52.429 [info] OPTIONS / 02:35:52.430 [debug] QUERY OK source="settings" db=0.2ms idle=1029.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:52.430 [debug] QUERY OK source="settings" db=0.2ms idle=1029.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:52.430 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:52.430 [error] #PID<0.90397.0> running PinchflatWeb.Endpoint (connection #PID<0.90396.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: OPTIONS / ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for OPTIONS / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90396.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45400}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "OPTIONS", owner: #PID<0.90397.0>, params: %{}, path_info: [], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_IBG3BmFG-20AA0Uj"} ], 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.90396.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45400}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, method: "OPTIONS", 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 OPTIONS / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90396.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45400}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "OPTIONS", owner: #PID<0.90397.0>, params: %{}, path_info: [], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_IBG3BmFG-20AA0Uj"} ], 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 (truncated) 02:35:52.491 [info] GET / 02:35:52.492 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{"rest_route" => "/wp/v2/users/"} Pipelines: [:browser] 02:35:52.492 [debug] QUERY OK source="settings" db=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 [] 02:35:52.492 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1001.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:35:52.492 [debug] QUERY OK source="sources" db=0.0ms idle=531.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:35:52.494 [debug] QUERY OK source="media_items" db=1.9ms idle=62.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:52.495 [debug] QUERY OK source="media_items" db=0.8ms idle=64.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:52.496 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:52.496 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:52.496 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:52.497 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:35:52.498 [debug] QUERY OK source="media_items" db=0.7ms idle=1.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)) [] 02:35:52.498 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:52.498 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:35:52.501 [debug] QUERY OK source="media_items" db=1.8ms idle=2.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"))) [] 02:35:52.502 [debug] QUERY OK source="media_items" db=0.9ms idle=4.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] 02:35:52.502 [debug] QUERY OK source="sources" db=0.1ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:35:52.503 [info] Sent 200 in 11ms 02:35:53.391 [info] GET / 02:35:53.391 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{"rest_route" => "/wp/v2/users/"} Pipelines: [:browser] 02:35:53.391 [debug] QUERY OK source="settings" db=0.1ms idle=892.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:53.391 [debug] QUERY OK source="media_profiles" db=0.0ms idle=890.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:35:53.392 [debug] QUERY OK source="sources" db=0.0ms idle=889.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:35:53.393 [debug] QUERY OK source="media_items" db=1.8ms idle=889.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:53.395 [debug] QUERY OK source="media_items" db=0.9ms idle=431.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:35:53.395 [debug] QUERY OK source="settings" db=0.0ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:53.395 [debug] QUERY OK source="settings" db=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:53.395 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:53.396 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:35:53.397 [debug] QUERY OK source="media_items" db=0.7ms idle=1.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)) [] 02:35:53.397 [debug] QUERY OK source="media_items" db=0.2ms idle=2.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:35:53.398 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:35:53.400 [debug] QUERY OK source="media_items" db=1.9ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 02:35:53.401 [debug] QUERY OK source="media_items" db=1.0ms idle=4.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 02:35:53.402 [debug] QUERY OK source="sources" db=0.1ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:35:53.403 [info] Sent 200 in 11ms 02:35:53.491 [info] GET /debug/default/view 02:35:53.492 [debug] QUERY OK source="settings" db=0.2ms idle=94.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:53.492 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:35:53.492 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:53.492 [error] #PID<0.90403.0> running PinchflatWeb.Endpoint (connection #PID<0.90402.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /debug/default/view?panel=config ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /debug/default/view (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90402.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45416}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90403.0>, params: %{"panel" => "config"}, path_info: ["debug", "default", "view"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_IFEE5PmiQg4ACW9h"} ], 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.90402.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45416}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /debug/default/view (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90402.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45416}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.248", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "146.190.63.248" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90403.0>, params: %{"panel" => "config"}, path_info: ["debug", "default", "view"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.248"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "146.190.63.248"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_IFEE5PmiQg4A (truncated) 02:35:54.518 [info] GET /debug/default/view 02:35:54.518 [debug] QUERY OK source="settings" db=0.1ms idle=1116.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:54.519 [debug] QUERY OK source="settings" db=0.0ms idle=1116.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:35:54.519 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:35:54.519 [error] #PID<0.90405.0> running PinchflatWeb.Endpoint (connection #PID<0.90404.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /debug/default/view?panel=config ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /debug/default/view (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90404.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45430}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90405.0>, params: %{"panel" => "config"}, path_info: ["debug", "default", "view"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_II41sjgPChgACW-B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90404.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45430}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /debug/default/view (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90404.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45430}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)", "x-forwarded-for" => "146.190.63.48", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "146.190.63.48" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90405.0>, params: %{"panel" => "config"}, path_info: ["debug", "default", "view"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.231323e2638313e293e2031313; +https://leakix.net)"}, {"x-forwarded-for", "146.190.63.48"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "146.190.63.48"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_II41sjgPChgACW-B"} ], (truncated) 02:36:00.296 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:36:09.035 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:36:39.036 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:37:00.297 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:37:09.038 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:37:39.039 [info] {"source":"oban","duration":893,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:38:00.298 [info] {"source":"oban","duration":167,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:38:04.731 [info] GET / 02:38:04.731 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:38:04.731 [debug] QUERY OK source="settings" db=0.1ms idle=1104.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:38:04.732 [debug] QUERY OK source="media_profiles" db=0.0ms idle=635.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:38:04.732 [debug] QUERY OK source="sources" db=0.0ms idle=105.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:38:04.734 [debug] QUERY OK source="media_items" db=2.0ms idle=105.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:38:04.735 [debug] QUERY OK source="media_items" db=0.8ms idle=107.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:38:04.735 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:38:04.735 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:38:04.735 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:38:04.736 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:38:04.737 [debug] QUERY OK source="media_items" db=0.6ms idle=1.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)) [] 02:38:04.737 [debug] QUERY OK source="media_items" db=0.1ms 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 INNER JOIN "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] 02:38:04.737 [debug] QUERY OK source="sources" db=0.0ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [6, 4, 7] 02:38:04.740 [debug] QUERY OK source="media_items" db=1.8ms idle=2.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"))) [] 02:38:04.741 [debug] QUERY OK source="media_items" db=1.2ms idle=4.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] 02:38:04.742 [debug] QUERY OK source="sources" db=0.1ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:38:04.743 [info] Sent 200 in 11ms 02:38:09.041 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:38:39.042 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:39:00.299 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:39:09.043 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:39:28.758 [info] GET /.env.example 02:39:28.758 [debug] QUERY OK source="settings" db=0.1ms idle=1839.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:39:28.759 [debug] QUERY OK source="settings" db=0.0ms idle=1839.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:39:28.759 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:39:28.759 [error] #PID<0.90431.0> running PinchflatWeb.Endpoint (connection #PID<0.90430.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.env.example ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90430.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.example", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 41942}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.", "x-forwarded-for" => "185.90.60.226", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.90.60.226" }, 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.moozuk.net", method: "GET", owner: #PID<0.90431.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604."}, {"x-forwarded-for", "185.90.60.226"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "185.90.60.226"} ], request_path: "/.env.example", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Um_o6vtr7wcABXTi"} ], 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.90430.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.example", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 41942}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.", "x-forwarded-for" => "185.90.60.226", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.90.60.226" }, 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 /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90430.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.example", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 41942}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.", "x-forwarded-for" => "185.90.60.226", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.90.60.226" }, 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.moozuk.net", method: "GET", owner: #PID<0.90431.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604."}, {"x-forwarded-for", "185.90.60.226"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "185.90.60.226"} ], request_path: "/.env.example", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_Um_o6vtr7wcABXTi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, ro (truncated) 02:39:29.668 [info] GET /.env 02:39:29.668 [debug] QUERY OK source="settings" db=0.1ms idle=909.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:39:29.668 [debug] QUERY OK source="settings" db=0.0ms idle=909.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:39:29.668 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:39:29.669 [error] #PID<0.90433.0> running PinchflatWeb.Endpoint (connection #PID<0.90432.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /.env ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90432.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 41952}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.", "x-forwarded-for" => "185.90.60.226", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.90.60.226" }, 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.moozuk.net", method: "GET", owner: #PID<0.90433.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604."}, {"x-forwarded-for", "185.90.60.226"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "185.90.60.226"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_UqYjQ8Z-dKYACXDh"} ], 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.90432.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 41952}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.", "x-forwarded-for" => "185.90.60.226", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.90.60.226" }, 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 / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90432.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 41952}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.", "x-forwarded-for" => "185.90.60.226", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "185.90.60.226" }, 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.moozuk.net", method: "GET", owner: #PID<0.90433.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604."}, {"x-forwarded-for", "185.90.60.226"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "185.90.60.226"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_UqYjQ8Z-dKYACXDh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stac (truncated) 02:39:39.045 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:40:00.300 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:40:09.046 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:40:39.047 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:41:00.301 [info] {"source":"oban","duration":238,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:41:09.048 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:41:39.049 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:41:43.713 [info] GET / 02:41:43.713 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:41:43.713 [debug] QUERY OK source="settings" db=0.1ms idle=794.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:43.714 [debug] QUERY OK source="media_profiles" db=0.0ms idle=795.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:41:43.714 [debug] QUERY OK source="sources" db=0.0ms idle=795.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:41:43.716 [debug] QUERY OK source="media_items" db=1.8ms idle=795.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:41:43.717 [debug] QUERY OK source="media_items" db=1.0ms idle=396.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:41:43.717 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:43.717 [debug] QUERY OK source="settings" db=0.0ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:43.718 [debug] QUERY OK source="settings" db=0.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 [] 02:41:43.718 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:41:43.720 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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)) [] 02:41:43.720 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:41:43.720 [debug] QUERY OK source="sources" db=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" IN (?,?,?)) [6, 4, 7] 02:41:43.723 [debug] QUERY OK source="media_items" db=1.9ms idle=3.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"))) [] 02:41:43.724 [debug] QUERY OK source="media_items" db=0.8ms 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 INNER JOIN "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] 02:41:43.725 [debug] QUERY OK source="sources" db=0.2ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:41:43.726 [info] Sent 200 in 12ms 02:41:44.487 [info] GET /sources/4 02:41:44.487 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 02:41:44.488 [debug] QUERY OK source="sources" db=0.1ms idle=767.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" = ?) [4] 02:41:44.488 [debug] QUERY OK source="media_profiles" db=0.1ms idle=765.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] 02:41:44.489 [debug] QUERY OK source="tasks" db=0.2ms idle=764.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 02:41:44.489 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=764.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16329] 02:41:44.489 [debug] QUERY OK source="settings" db=0.0ms idle=168.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.489 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.490 [debug] QUERY OK source="settings" db=0.2ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.490 [info] GET /sources/7/media/50511 02:41:44.491 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50511", "source_id" => "7"} Pipelines: [:browser] 02:41:44.491 [debug] QUERY OK source="sources" db=0.2ms idle=1.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" = ?) [4] 02:41:44.491 [debug] QUERY OK source="media_items" db=0.2ms idle=1.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50511] 02:41:44.491 [debug] QUERY OK source="tasks" db=0.1ms idle=1.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50511] 02:41:44.491 [debug] QUERY OK source="media_items" db=0.3ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 02:41:44.491 [debug] QUERY OK source="sources" db=0.2ms 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] 02:41:44.492 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=0.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16331] 02:41:44.492 [info] GET /sources 02:41:44.492 [debug] QUERY OK source="media_items" db=0.8ms idle=0.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 ? [4, 10, 0] 02:41:44.492 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 02:41:44.492 [debug] QUERY OK source="settings" db=0.4ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.493 [info] GET /sources/7 02:41:44.493 [debug] QUERY OK source="settings" db=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 [] 02:41:44.493 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 02:41:44.493 [debug] QUERY OK source="settings" db=0.1ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.493 [debug] QUERY OK source="sources" db=0.2ms idle=1.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:44.493 [debug] QUERY OK source="settings" db=0.5ms 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 [] 02:41:44.493 [debug] QUERY OK source="sources" db=0.6ms idle=0.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] 02:41:44.493 [debug] QUERY OK source="settings" db=0.2ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.494 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.494 [debug] QUERY OK source="media_profiles" db=0.3ms idle=0.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] 02:41:44.494 [debug] QUERY OK source="media_items" db=0.4ms idle=0.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 02:41:44.494 [debug] QUERY OK source="media_profiles" db=0.2ms idle=0.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:44.495 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.495 [debug] QUERY OK source="media_items" db=0.6ms idle=0.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 ? [4, 10, 0] 02:41:44.495 [debug] QUERY OK source="tasks" db=0.6ms idle=0.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [7, "executing", "available", "scheduled", "retryable"] 02:41:44.495 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.495 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=0.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16332] 02:41:44.495 [info] Sent 200 in 5ms 02:41:44.495 [debug] QUERY OK source="sources" db=0.2ms idle=0.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:44.496 [debug] QUERY OK source="settings" db=0.2ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.496 [info] GET /media_profiles 02:41:44.496 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 02:41:44.497 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", (SELECT count(ss0."id") AS "result" FROM "sources" AS ss0 WHERE (ss0."media_profile_id" = m0."id")) FROM "media_profiles" AS m0 WHERE (m0."marked_for_deletion_at" IS NULL) ORDER BY m0."name" [] 02:41:44.497 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.497 [debug] QUERY OK source="settings" db=0.0ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.498 [debug] QUERY OK source="settings" db=2.2ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.498 [debug] QUERY OK source="settings" db=0.1ms queue=0.2ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.498 [info] Sent 200 in 2ms 02:41:44.499 [debug] QUERY OK source="media_items" db=3.1ms idle=0.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [4] 02:41:44.499 [debug] QUERY OK source="settings" db=0.3ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.500 [debug] QUERY OK source="sources" db=0.1ms idle=1.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] 02:41:44.500 [debug] QUERY OK source="sources" db=4.4ms idle=0.6ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 02:41:44.501 [debug] QUERY OK source="media_items" db=1.9ms idle=0.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 ? [4, 10, 0] 02:41:44.502 [debug] QUERY OK source="media_items" db=2.3ms idle=1.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 02:41:44.503 [info] Sent 200 in 15ms 02:41:44.505 [debug] QUERY OK source="media_items" db=2.8ms idle=2.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:41:44.506 [debug] QUERY OK source="sources" db=5.5ms 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", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 02:41:44.507 [debug] QUERY OK source="sources" db=0.2ms idle=6.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:44.507 [info] Sent 200 in 15ms 02:41:44.508 [debug] QUERY OK source="media_items" db=1.3ms idle=6.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 02:41:44.510 [debug] QUERY OK source="media_items" db=1.9ms idle=6.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] 02:41:44.511 [debug] QUERY OK source="sources" db=0.1ms idle=5.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:44.513 [debug] QUERY OK source="media_items" db=1.5ms idle=5.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [7] 02:41:44.515 [debug] QUERY OK source="media_items" db=1.8ms idle=6.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] 02:41:44.516 [info] Sent 200 in 23ms 02:41:44.516 [info] GET /settings 02:41:44.516 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 02:41:44.517 [debug] QUERY OK source="settings" db=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 [] 02:41:44.517 [debug] QUERY OK source="settings" db=0.2ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.517 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.518 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.518 [info] Sent 200 in 2ms 02:41:44.520 [info] GET /sources/7/media/50510 02:41:44.520 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50510", "source_id" => "7"} Pipelines: [:browser] 02:41:44.521 [debug] QUERY OK source="media_items" db=0.1ms idle=5.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50510] 02:41:44.521 [debug] QUERY OK source="tasks" db=0.1ms idle=4.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50510] 02:41:44.521 [debug] QUERY OK source="sources" db=0.1ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:44.522 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=4.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16330] 02:41:44.522 [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 [] 02:41:44.522 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.522 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.523 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:44.524 [info] Sent 200 in 3ms 02:41:44.526 [info] GET /sources/4/media/50466 02:41:44.526 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50466", "source_id" => "4"} Pipelines: [:browser] 02:41:44.526 [debug] QUERY OK source="media_items" db=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" = ?) [50466] 02:41:44.526 [debug] QUERY OK source="tasks" db=0.1ms idle=4.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50466] 02:41:44.526 [debug] QUERY OK source="sources" db=0.1ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:44.527 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=3.9ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16327] 02:41:44.527 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.527 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.528 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.528 [debug] QUERY OK source="media_profiles" db=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] 02:41:44.530 [info] Sent 200 in 4ms 02:41:44.691 [info] GET /app_info 02:41:44.691 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 02:41:44.692 [debug] QUERY OK source="settings" db=0.1ms 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 [] 02:41:44.692 [debug] QUERY OK source="settings" db=0.0ms idle=165.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.693 [debug] QUERY OK source="settings" db=0.0ms idle=165.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.693 [debug] QUERY OK source="settings" db=0.0ms idle=165.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.693 [debug] QUERY OK source="settings" db=0.2ms idle=164.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.694 [info] Sent 200 in 2ms 02:41:44.695 [info] GET /sources/6/media/50411 02:41:44.696 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50411", "source_id" => "6"} Pipelines: [:browser] 02:41:44.696 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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" = ?) [50411] 02:41:44.696 [debug] QUERY OK source="tasks" db=0.1ms idle=4.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50411] 02:41:44.697 [debug] QUERY OK source="sources" db=0.2ms idle=3.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:44.697 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=3.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16293, 16337] 02:41:44.697 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.697 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.698 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.698 [debug] QUERY OK source="media_profiles" db=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] 02:41:44.699 [info] Sent 200 in 3ms 02:41:44.704 [info] GET /sources/4/media/50467 02:41:44.705 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50467", "source_id" => "4"} Pipelines: [:browser] 02:41:44.705 [debug] QUERY OK source="media_items" db=0.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 WHERE (m0."id" = ?) [50467] 02:41:44.705 [debug] QUERY OK source="tasks" db=0.1ms idle=8.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50467] 02:41:44.706 [debug] QUERY OK source="sources" db=0.2ms idle=8.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" = ?) [4] 02:41:44.706 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=8.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16328] 02:41:44.706 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.706 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.706 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.707 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 02:41:44.708 [info] Sent 200 in 3ms 02:41:44.726 [info] GET /sources/6 02:41:44.727 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 02:41:44.727 [debug] QUERY OK source="sources" db=0.1ms idle=21.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] 02:41:44.727 [debug] QUERY OK source="media_profiles" db=0.1ms idle=21.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] 02:41:44.728 [debug] QUERY OK source="tasks" db=0.1ms idle=21.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 02:41:44.728 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=21.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16333] 02:41:44.728 [debug] QUERY OK source="settings" db=0.0ms idle=21.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.728 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.728 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.729 [debug] QUERY OK source="sources" db=0.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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:44.729 [debug] QUERY OK source="media_items" db=0.2ms idle=1.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 02:41:44.730 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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 ? [6, 10, 0] 02:41:44.730 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:44.730 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 02:41:44.731 [debug] QUERY OK source="media_items" db=0.2ms idle=1.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:41:44.731 [debug] QUERY OK source="sources" db=0.0ms idle=1.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] 02:41:44.732 [debug] QUERY OK source="media_items" db=0.1ms idle=1.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [6] 02:41:44.732 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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] 02:41:44.733 [info] Sent 200 in 6ms 02:41:44.746 [info] GET /sources/3/media/47311 02:41:44.746 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47311", "source_id" => "3"} Pipelines: [:browser] 02:41:44.747 [debug] QUERY OK source="media_items" db=0.1ms 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 WHERE (m0."id" = ?) [47311] 02:41:44.747 [debug] QUERY OK source="tasks" db=0.1ms idle=16.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47311] 02:41:44.747 [debug] QUERY OK source="sources" db=0.2ms idle=15.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:44.748 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=15.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 (?,?,?,?,?,?,?,?,?,?)) [15755, 16007, 16044, 16109, 16149, 16183, 16214, 16245, 16287, 16325] 02:41:44.748 [debug] QUERY OK source="settings" db=0.0ms idle=16.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.749 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.749 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.749 [debug] QUERY OK source="media_profiles" db=0.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] 02:41:44.750 [info] Sent 200 in 4ms 02:41:44.871 [info] GET /sources/3 02:41:44.871 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 02:41:44.872 [debug] QUERY OK source="sources" db=0.1ms idle=123.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:44.872 [debug] QUERY OK source="media_profiles" db=0.1ms idle=123.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] 02:41:44.872 [debug] QUERY OK source="tasks" db=0.1ms idle=123.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 02:41:44.872 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=123.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16326] 02:41:44.873 [debug] QUERY OK source="settings" db=0.0ms idle=123.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.873 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.873 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.874 [debug] QUERY OK source="sources" db=0.0ms idle=1.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:44.875 [debug] QUERY OK source="media_items" db=0.5ms idle=1.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 02:41:44.876 [debug] QUERY OK source="media_items" db=0.6ms idle=2.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 ? [3, 10, 0] 02:41:44.876 [debug] QUERY OK source="sources" db=0.0ms idle=3.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] 02:41:44.877 [debug] QUERY OK source="media_items" db=0.1ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 02:41:44.877 [debug] QUERY OK source="media_items" db=0.4ms idle=2.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:41:44.878 [debug] QUERY OK source="sources" db=0.0ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:44.878 [debug] QUERY OK source="media_items" db=0.4ms idle=2.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [3] 02:41:44.879 [debug] QUERY OK source="media_items" db=0.7ms idle=1.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 ? [3, 10, 0] 02:41:44.880 [info] Sent 200 in 8ms 02:41:44.889 [info] GET /sources/3/media/37712 02:41:44.889 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "37712", "source_id" => "3"} Pipelines: [:browser] 02:41:44.890 [debug] QUERY OK source="media_items" db=0.1ms idle=13.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" = ?) [37712] 02:41:44.890 [debug] QUERY OK source="tasks" db=0.1ms idle=12.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [37712] 02:41:44.890 [debug] QUERY OK source="sources" db=0.1ms idle=12.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:44.891 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=12.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?,?)) [14777, 15300, 15838, 16324] 02:41:44.891 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.891 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.892 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.892 [debug] QUERY OK source="media_profiles" db=0.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] 02:41:44.893 [info] Sent 200 in 3ms 02:41:44.898 [info] GET /sources/7/media/32741 02:41:44.898 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32741", "source_id" => "7"} Pipelines: [:browser] 02:41:44.899 [debug] QUERY OK source="media_items" db=0.2ms 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" = ?) [32741] 02:41:44.899 [debug] QUERY OK source="tasks" db=0.1ms idle=7.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32741] 02:41:44.899 [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" = ?) [7] 02:41:44.900 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=7.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 (?,?,?)) [15089, 15575, 16074] 02:41:44.900 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.900 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.901 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.901 [debug] QUERY OK source="media_profiles" db=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] 02:41:44.902 [info] Sent 200 in 4ms 02:41:44.904 [info] GET /sources/7/media/32687 02:41:44.904 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32687", "source_id" => "7"} Pipelines: [:browser] 02:41:44.905 [debug] QUERY OK source="media_items" db=0.2ms idle=5.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32687] 02:41:44.905 [debug] QUERY OK source="tasks" db=0.1ms idle=4.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32687] 02:41:44.905 [debug] QUERY OK source="sources" db=0.2ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:44.906 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=4.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 (?,?,?)) [15088, 15574, 16073] 02:41:44.906 [debug] QUERY OK source="settings" db=0.0ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.906 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.907 [debug] QUERY OK source="settings" db=0.2ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.907 [info] GET /sources/7/media/32682 02:41:44.907 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32682", "source_id" => "7"} Pipelines: [:browser] 02:41:44.907 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 02:41:44.907 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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" = ?) [32682] 02:41:44.908 [debug] QUERY OK source="tasks" db=0.1ms idle=1.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32682] 02:41:44.908 [debug] QUERY OK source="sources" db=0.2ms 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] 02:41:44.908 [info] Sent 200 in 3ms 02:41:44.908 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15087, 15573, 16072] 02:41:44.909 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.909 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.909 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.910 [debug] QUERY OK source="media_profiles" db=0.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] 02:41:44.911 [info] Sent 200 in 3ms 02:41:44.941 [info] GET /media_profiles/new 02:41:44.941 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{} Pipelines: [:browser] 02:41:44.942 [debug] QUERY OK source="settings" db=0.1ms idle=33.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.942 [debug] QUERY OK source="settings" db=0.0ms idle=33.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.942 [debug] QUERY OK source="settings" db=0.0ms idle=33.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.943 [debug] QUERY OK source="settings" db=0.0ms idle=33.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.943 [debug] QUERY OK source="settings" db=0.0ms idle=33.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:44.944 [info] Sent 200 in 2ms 02:41:44.953 [info] GET /media_profiles/1 02:41:44.953 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 02:41:44.953 [debug] QUERY OK source="media_profiles" db=0.1ms idle=11.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 WHERE (m0."id" = ?) [1] 02:41:44.954 [debug] QUERY OK source="sources" db=0.1ms 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" FROM "sources" AS s0 WHERE (s0."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 02:41:44.954 [debug] QUERY OK source="settings" db=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 [] 02:41:44.954 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.954 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.955 [info] Sent 200 in 2ms 02:41:44.961 [info] GET /media_profiles/1/ 02:41:44.961 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 02:41:44.961 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:44.962 [debug] QUERY OK source="sources" db=0.1ms idle=7.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 02:41:44.962 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.962 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.963 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:44.963 [info] Sent 200 in 2ms 02:41:45.076 [info] GET /media_profiles/1/edit 02:41:45.077 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 02:41:45.077 [debug] QUERY OK source="media_profiles" db=0.1ms idle=115.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] 02:41:45.077 [debug] QUERY OK source="settings" db=0.1ms idle=115.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.078 [debug] QUERY OK source="settings" db=0.0ms idle=115.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.078 [debug] QUERY OK source="settings" db=0.0ms idle=115.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.079 [info] Sent 200 in 2ms 02:41:45.089 [info] GET /sources/5/ 02:41:45.089 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 02:41:45.089 [debug] QUERY OK source="sources" db=0.2ms idle=126.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.089 [debug] QUERY OK source="media_profiles" db=0.1ms idle=12.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:45.090 [debug] QUERY OK source="tasks" db=0.2ms idle=12.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 02:41:45.090 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=12.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" = ?) [16319] 02:41:45.090 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.090 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.091 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.091 [debug] QUERY OK source="sources" db=0.1ms idle=1.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.092 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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")))) [5] 02:41:45.093 [debug] QUERY OK source="media_items" db=0.4ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:41:45.093 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.094 [debug] QUERY OK source="media_items" db=0.1ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 02:41:45.094 [debug] QUERY OK source="media_items" db=0.2ms idle=2.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:41:45.095 [debug] QUERY OK source="sources" db=0.0ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.095 [debug] QUERY OK source="media_items" db=0.1ms idle=2.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [5] 02:41:45.095 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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 ? [5, 10, 0] 02:41:45.096 [info] Sent 200 in 7ms 02:41:45.102 [info] GET /sources/opml.xml 02:41:45.102 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.opml_feed/2 Parameters: %{"route_token" => "2270c5ec-3878-49ae-8bed-563d0feab2b2"} Pipelines: [:maybe_basic_auth, :token_protected_route] 02:41:45.102 [debug] QUERY OK source="settings" db=0.1ms idle=8.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.103 [debug] QUERY OK source="sources" db=0.1ms idle=8.4ms SELECT s0."custom_name", s0."uuid" FROM "sources" AS s0 WHERE (s0."marked_for_deletion_at" IS NULL) ORDER BY s0."custom_name" [] 02:41:45.103 [info] Sent 200 in 916µs 02:41:45.104 [info] GET /sources/new 02:41:45.104 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 02:41:45.105 [debug] QUERY OK source="media_profiles" db=0.0ms idle=10.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" [] 02:41:45.105 [debug] QUERY OK source="settings" db=0.0ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.105 [debug] QUERY OK source="settings" db=0.1ms idle=9.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.105 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.106 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.106 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.107 [info] Sent 200 in 2ms 02:41:45.107 [info] GET /sources/5 02:41:45.107 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 02:41:45.108 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.108 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 02:41:45.108 [debug] QUERY OK source="tasks" db=0.1ms idle=2.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 02:41:45.108 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=2.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16319] 02:41:45.109 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.109 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.109 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.110 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.110 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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")))) [5] 02:41:45.111 [debug] QUERY OK source="media_items" db=0.3ms idle=1.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:41:45.111 [debug] QUERY OK source="sources" db=0.0ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.112 [debug] QUERY OK source="media_items" db=0.1ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 02:41:45.112 [debug] QUERY OK source="media_items" db=0.1ms idle=1.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:41:45.112 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.113 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [5] 02:41:45.113 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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 ? [5, 10, 0] 02:41:45.114 [info] Sent 200 in 7ms 02:41:45.152 [info] GET /sources/5/ 02:41:45.152 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 02:41:45.153 [debug] QUERY OK source="sources" db=0.2ms idle=40.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.153 [debug] QUERY OK source="media_profiles" db=0.1ms idle=41.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] 02:41:45.153 [debug] QUERY OK source="tasks" db=0.1ms idle=40.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 02:41:45.154 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=40.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16319] 02:41:45.154 [debug] QUERY OK source="settings" db=0.0ms idle=40.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.154 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.154 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.155 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.155 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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")))) [5] 02:41:45.156 [debug] QUERY OK source="media_items" db=0.4ms idle=1.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 ? [5, 10, 0] 02:41:45.157 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.157 [debug] QUERY OK source="media_items" db=0.0ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 02:41:45.157 [debug] QUERY OK source="media_items" db=0.2ms idle=1.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:41:45.158 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.158 [debug] QUERY OK source="media_items" db=0.2ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [5] 02:41:45.158 [debug] QUERY OK source="media_items" db=0.4ms idle=1.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:41:45.159 [info] Sent 200 in 6ms 02:41:45.168 [info] GET /sources/3/edit 02:41:45.168 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 02:41:45.169 [debug] QUERY OK source="sources" db=0.1ms idle=11.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:45.169 [debug] QUERY OK source="media_profiles" db=0.0ms idle=11.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 02:41:45.169 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.169 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.170 [debug] QUERY OK source="settings" db=0.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 [] 02:41:45.171 [info] Sent 200 in 2ms 02:41:45.174 [info] GET /sources/5/edit 02:41:45.174 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 02:41:45.174 [debug] QUERY OK source="sources" db=0.1ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:41:45.174 [debug] QUERY OK source="media_profiles" db=0.0ms idle=5.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 02:41:45.174 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.175 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.175 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.176 [info] Sent 200 in 2ms 02:41:45.274 [info] GET /sources/3/ 02:41:45.274 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 02:41:45.275 [debug] QUERY OK source="sources" db=0.1ms idle=100.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] 02:41:45.275 [debug] QUERY OK source="media_profiles" db=0.1ms idle=100.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] 02:41:45.275 [debug] QUERY OK source="tasks" db=0.2ms idle=100.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 02:41:45.276 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=100.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" = ?) [16326] 02:41:45.276 [debug] QUERY OK source="settings" db=0.0ms idle=100.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.276 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.276 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.277 [debug] QUERY OK source="sources" db=0.1ms idle=1.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:45.278 [debug] QUERY OK source="media_items" db=0.6ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 02:41:45.279 [debug] QUERY OK source="media_items" db=0.7ms idle=2.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:41:45.280 [debug] QUERY OK source="sources" db=0.0ms idle=3.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:45.280 [debug] QUERY OK source="media_items" db=0.1ms idle=3.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 02:41:45.280 [debug] QUERY OK source="media_items" db=0.4ms idle=2.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:41:45.281 [debug] QUERY OK source="sources" db=0.0ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:45.282 [debug] QUERY OK source="media_items" db=0.6ms idle=2.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"))))) [3] 02:41:45.283 [debug] QUERY OK source="media_items" db=0.6ms idle=2.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:41:45.284 [info] Sent 200 in 9ms 02:41:45.293 [info] GET /sources/3/ 02:41:45.293 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 02:41:45.294 [debug] QUERY OK source="sources" db=0.1ms idle=13.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:45.294 [debug] QUERY OK source="media_profiles" db=0.1ms idle=13.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:45.294 [debug] QUERY OK source="tasks" db=0.1ms idle=12.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 (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 02:41:45.294 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=12.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16326] 02:41:45.295 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.295 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.295 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.296 [debug] QUERY OK source="sources" db=0.1ms idle=1.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:45.297 [debug] QUERY OK source="media_items" db=0.5ms idle=1.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")))) [3] 02:41:45.297 [debug] QUERY OK source="media_items" db=0.7ms idle=2.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 ? [3, 10, 0] 02:41:45.298 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:45.298 [debug] QUERY OK source="media_items" db=0.1ms idle=3.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 02:41:45.299 [debug] QUERY OK source="media_items" db=0.4ms idle=2.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:41:45.299 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:41:45.300 [debug] QUERY OK source="media_items" db=0.5ms idle=2.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"))))) [3] 02:41:45.301 [debug] QUERY OK source="media_items" db=0.6ms idle=2.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:41:45.301 [info] GET /sources/4/ 02:41:45.301 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 02:41:45.302 [debug] QUERY OK source="sources" db=0.2ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:45.302 [info] Sent 200 in 8ms 02:41:45.302 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 02:41:45.302 [debug] QUERY OK source="tasks" db=0.1ms idle=2.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 02:41:45.302 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=2.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16329] 02:41:45.303 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.303 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.303 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.304 [debug] QUERY OK source="sources" db=0.0ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:45.305 [debug] QUERY OK source="media_items" db=0.2ms idle=1.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 02:41:45.305 [debug] QUERY OK source="media_items" db=0.3ms idle=1.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:41:45.305 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:45.306 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 02:41:45.306 [debug] QUERY OK source="media_items" db=0.4ms idle=1.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:41:45.307 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:45.307 [info] GET /sources/4/ 02:41:45.307 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 02:41:45.307 [debug] QUERY OK source="media_items" db=0.3ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [4] 02:41:45.307 [debug] QUERY OK source="sources" db=0.1ms idle=1.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" = ?) [4] 02:41:45.308 [debug] QUERY OK source="media_items" db=0.5ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:41:45.308 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:45.308 [debug] QUERY OK source="tasks" db=0.1ms idle=1.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 02:41:45.308 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=1.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16329] 02:41:45.308 [info] Sent 200 in 7ms 02:41:45.309 [debug] QUERY OK source="settings" db=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 [] 02:41:45.309 [debug] QUERY OK source="settings" db=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 [] 02:41:45.309 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.310 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:45.311 [debug] QUERY OK source="media_items" db=0.3ms idle=2.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 02:41:45.311 [debug] QUERY OK source="media_items" db=0.4ms idle=2.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:41:45.312 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:45.312 [debug] QUERY OK source="media_items" db=0.1ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 02:41:45.312 [info] GET /sources/4/edit 02:41:45.312 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 02:41:45.313 [debug] QUERY OK source="sources" db=0.0ms idle=1.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" = ?) [4] 02:41:45.313 [debug] QUERY OK source="media_items" db=0.4ms idle=1.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 ? [4, 10, 0] 02:41:45.313 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 02:41:45.313 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.313 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.313 [debug] QUERY OK source="sources" db=0.0ms idle=0.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:45.314 [debug] QUERY OK source="settings" db=0.2ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.314 [debug] QUERY OK source="media_items" db=0.3ms idle=0.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [4] 02:41:45.315 [debug] QUERY OK source="media_items" db=0.4ms idle=0.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 ? [4, 10, 0] 02:41:45.315 [info] Sent 200 in 2ms 02:41:45.316 [info] Sent 200 in 8ms 02:41:45.370 [info] GET /sources/7/ 02:41:45.370 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 02:41:45.371 [debug] QUERY OK source="sources" db=0.1ms idle=57.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:45.371 [debug] QUERY OK source="media_profiles" db=0.1ms idle=57.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] 02:41:45.371 [debug] QUERY OK source="tasks" db=0.1ms idle=57.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [7, "executing", "available", "scheduled", "retryable"] 02:41:45.371 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=56.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" = ?) [16332] 02:41:45.372 [debug] QUERY OK source="settings" db=0.0ms idle=50.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.372 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.372 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.373 [debug] QUERY OK source="sources" db=0.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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:45.375 [debug] QUERY OK source="media_items" db=1.5ms idle=1.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] 02:41:45.377 [debug] QUERY OK source="media_items" db=1.8ms idle=2.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:41:45.377 [debug] QUERY OK source="sources" db=0.1ms idle=5.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:45.378 [debug] QUERY OK source="media_items" db=0.8ms idle=5.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 02:41:45.381 [debug] QUERY OK source="media_items" db=2.1ms idle=5.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:41:45.381 [debug] QUERY OK source="sources" db=0.1ms idle=6.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:45.383 [debug] QUERY OK source="media_items" db=1.5ms idle=4.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [7] 02:41:45.384 [info] GET /sources/7/ 02:41:45.384 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 02:41:45.385 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [7] 02:41:45.385 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:45.385 [debug] QUERY OK source="media_items" db=1.9ms idle=5.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:41:45.385 [debug] QUERY OK source="tasks" db=0.2ms idle=3.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"] 02:41:45.386 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=2.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" = ?) [16332] 02:41:45.386 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.386 [info] Sent 200 in 15ms 02:41:45.386 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.387 [info] GET /sources/7/edit 02:41:45.387 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 02:41:45.387 [debug] QUERY OK source="settings" db=0.3ms 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 [] 02:41:45.387 [debug] QUERY OK source="sources" db=0.2ms idle=1.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] 02:41:45.388 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 02:41:45.388 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.388 [debug] QUERY OK source="sources" db=0.1ms idle=1.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:45.388 [debug] QUERY OK source="settings" db=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 [] 02:41:45.390 [debug] QUERY OK source="media_items" db=1.6ms idle=0.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 02:41:45.390 [debug] QUERY OK source="settings" db=0.2ms queue=1.3ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.391 [info] Sent 200 in 4ms 02:41:45.392 [debug] QUERY OK source="media_items" db=1.9ms idle=1.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:41:45.393 [debug] QUERY OK source="sources" db=0.1ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:45.394 [debug] QUERY OK source="media_items" db=0.8ms idle=4.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 02:41:45.396 [debug] QUERY OK source="media_items" db=2.1ms idle=4.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] 02:41:45.397 [debug] QUERY OK source="sources" db=0.1ms idle=6.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:45.399 [debug] QUERY OK source="media_items" db=1.8ms idle=5.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 02:41:45.401 [debug] QUERY OK source="media_items" db=2.0ms idle=6.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] 02:41:45.403 [info] Sent 200 in 18ms 02:41:45.480 [info] GET /sources/6/ 02:41:45.481 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 02:41:45.481 [debug] QUERY OK source="sources" db=0.2ms idle=87.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] 02:41:45.481 [debug] QUERY OK source="media_profiles" db=0.1ms idle=85.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] 02:41:45.482 [debug] QUERY OK source="tasks" db=0.2ms idle=84.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 02:41:45.482 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=83.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16333] 02:41:45.482 [debug] QUERY OK source="settings" db=0.0ms idle=81.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.482 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.483 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.484 [debug] QUERY OK source="sources" db=0.0ms idle=1.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:45.484 [debug] QUERY OK source="media_items" db=0.1ms idle=1.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 02:41:45.484 [debug] QUERY OK source="media_items" db=0.3ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:41:45.485 [debug] QUERY OK source="sources" db=0.2ms idle=2.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:45.485 [debug] QUERY OK source="media_items" db=0.1ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 02:41:45.486 [debug] QUERY OK source="media_items" db=0.2ms idle=1.7ms 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] 02:41:45.486 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:45.487 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [6] 02:41:45.487 [debug] QUERY OK source="media_items" db=0.2ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:41:45.487 [info] Sent 200 in 6ms 02:41:45.500 [info] GET /sources/6/ 02:41:45.501 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 02:41:45.501 [debug] QUERY OK source="sources" db=0.1ms idle=15.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:45.501 [debug] QUERY OK source="media_profiles" db=0.1ms idle=15.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] 02:41:45.502 [debug] QUERY OK source="tasks" db=0.1ms idle=15.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 02:41:45.502 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=15.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16333] 02:41:45.502 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.502 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.502 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.503 [debug] QUERY OK source="sources" db=0.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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:45.504 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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")))) [6] 02:41:45.504 [debug] QUERY OK source="media_items" db=0.3ms idle=1.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:41:45.505 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:45.505 [debug] QUERY OK source="media_items" db=0.0ms idle=2.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 02:41:45.505 [debug] QUERY OK source="media_items" db=0.2ms idle=1.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:41:45.506 [debug] QUERY OK source="sources" db=0.0ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:45.506 [debug] QUERY OK source="media_items" db=0.1ms idle=1.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] 02:41:45.506 [debug] QUERY OK source="media_items" db=0.2ms idle=1.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:41:45.507 [info] Sent 200 in 6ms 02:41:45.508 [info] GET /sources/6/edit 02:41:45.508 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 02:41:45.509 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:41:45.509 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 02:41:45.510 [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 [] 02:41:45.510 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.510 [debug] QUERY OK source="settings" db=0.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 [] 02:41:45.511 [info] Sent 200 in 3ms 02:41:45.513 [info] GET /sources/7/media/50511/force_download 02:41:45.513 [info] GET /sources/7/media/50511/edit 02:41:45.513 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50511", "source_id" => "7"} Pipelines: [:browser] 02:41:45.513 [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 [] 02:41:45.513 [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 [] 02:41:45.514 [debug] QUERY OK source="media_items" db=0.2ms idle=3.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" = ?) [50511] 02:41:45.514 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:45.514 [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 [] 02:41:45.514 [debug] QUERY OK source="settings" db=0.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 [] 02:41:45.515 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.515 [info] Sent 200 in 2ms 02:41:45.514 [error] #PID<0.90563.0> running PinchflatWeb.Endpoint (connection #PID<0.90561.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50511/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50511/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90561.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54860}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90563.0>, params: %{}, path_info: ["sources", "7", "media", "50511", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/7/media/50511/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_ckchuSBMP9QABYNi"} ], 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.90561.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54860}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/7/media/50511/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90561.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54860}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90563.0>, params: %{}, path_info: ["sources", "7", "media", "50511", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router (truncated) 02:41:45.596 [info] GET /sources/7/media/50511 02:41:45.596 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50511", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 02:41:45.596 [debug] QUERY OK source="media_items" db=0.1ms idle=82.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" = ?) [50511] 02:41:45.597 [debug] QUERY OK source="tasks" db=0.0ms idle=83.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50511] 02:41:45.597 [debug] QUERY OK source="sources" db=0.1ms idle=82.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] 02:41:45.597 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=82.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" = ?) [16331] 02:41:45.597 [debug] QUERY OK source="settings" db=0.0ms idle=82.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.598 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.598 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:45.598 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 02:41:45.599 [info] Sent 200 in 3ms 02:41:45.601 [info] GET /media/80b13588-a4c0-4e29-98a0-90a1848f6c1b/stream 02:41:45.601 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "80b13588-a4c0-4e29-98a0-90a1848f6c1b", "v" => "1792206369"} Pipelines: [:maybe_basic_auth] 02:41:45.602 [debug] QUERY OK source="media_items" db=0.1ms idle=4.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["80b13588-a4c0-4e29-98a0-90a1848f6c1b"] 02:41:45.602 [debug] Invalid range request for media item: 80b13588-a4c0-4e29-98a0-90a1848f6c1b - serving full file 02:41:45.602 [info] Sent 200 in 551µs 02:41:45.919 [info] GET /media/bb92ecb0-8b63-4711-8901-d63fabb88f1e/stream 02:41:45.919 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "bb92ecb0-8b63-4711-8901-d63fabb88f1e", "v" => "1792206365"} Pipelines: [:maybe_basic_auth] 02:41:45.919 [info] GET /sources/7/media/50510/force_download 02:41:45.919 [info] GET /sources/7/media/50510/edit 02:41:45.919 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50510", "source_id" => "7"} Pipelines: [:browser] 02:41:45.920 [info] GET /sources/7/media/50511/force_download 02:41:45.920 [debug] QUERY OK source="media_items" db=0.4ms idle=321.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["bb92ecb0-8b63-4711-8901-d63fabb88f1e"] 02:41:45.920 [info] GET /sources/new 02:41:45.920 [debug] QUERY OK source="settings" db=0.4ms idle=321.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.920 [info] GET /sources/7/media/50510 02:41:45.920 [info] GET /sources/f0fbd86f-d345-4e9d-aa0f-6307fca1dad4/feed.xml 02:41:45.920 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=321.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" = ?) [50510] 02:41:45.920 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "f0fbd86f-d345-4e9d-aa0f-6307fca1dad4"} Pipelines: [:maybe_basic_auth] 02:41:45.920 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50510", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 02:41:45.920 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=321.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.920 [debug] Invalid range request for media item: bb92ecb0-8b63-4711-8901-d63fabb88f1e - serving full file 02:41:45.920 [info] Sent 200 in 1ms 02:41:45.920 [debug] QUERY OK source="settings" db=0.3ms idle=318.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.921 [debug] QUERY OK source="sources" db=0.2ms idle=0.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["f0fbd86f-d345-4e9d-aa0f-6307fca1dad4"] 02:41:45.921 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:45.921 [debug] QUERY OK source="settings" db=0.1ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.921 [debug] QUERY OK source="media_items" db=0.3ms idle=0.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50510] 02:41:45.921 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:45.920 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{"template_id" => "4"} Pipelines: [:browser] 02:41:45.922 [debug] QUERY OK source="settings" db=1.4ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.921 [error] #PID<0.90575.0> running PinchflatWeb.Endpoint (connection #PID<0.90574.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50510/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50510/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90574.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54920}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90575.0>, params: %{}, path_info: ["sources", "7", "media", "50510", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/7/media/50510/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cl9bTewrb6gACXjB"} ], 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.90574.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54920}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/7/media/50510/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90574.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54920}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90575.0>, params: %{}, path_info: ["sources", "7", "media", "50510", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router (truncated) 02:41:45.922 [error] #PID<0.90579.0> running PinchflatWeb.Endpoint (connection #PID<0.90578.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50511/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50511/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90578.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54932}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90579.0>, params: %{}, path_info: ["sources", "7", "media", "50511", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/7/media/50511/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cl9jvgcw_WAACXkB"} ], 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.90578.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54932}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/7/media/50511/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90578.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54932}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90579.0>, params: %{}, path_info: ["sources", "7", "media", "50511", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router (truncated) 02:41:45.924 [debug] QUERY OK source="settings" db=1.4ms queue=0.8ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.924 [debug] QUERY OK source="sources" db=1.8ms queue=0.9ms idle=1.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:45.925 [debug] QUERY OK source="tasks" db=1.9ms idle=1.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50510] 02:41:45.925 [debug] QUERY OK source="sources" db=2.0ms idle=0.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:41:45.925 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.925 [debug] QUERY OK source="media_profiles" db=0.4ms idle=0.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" [] 02:41:45.925 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=0.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16330] 02:41:45.926 [info] Sent 200 in 6ms 02:41:45.926 [debug] QUERY OK source="settings" db=0.9ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.927 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.927 [debug] QUERY OK source="settings" db=0.8ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.928 [debug] QUERY OK source="settings" db=0.6ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.928 [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 [] 02:41:45.927 [debug] QUERY OK source="media_items" db=6.6ms idle=0.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [4, 2000] 02:41:45.928 [debug] QUERY OK source="settings" db=0.2ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.929 [debug] QUERY OK source="settings" db=0.5ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:45.930 [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 [] 02:41:45.931 [debug] QUERY OK source="media_profiles" db=1.6ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:45.931 [info] Sent 200 in 11ms 02:41:45.932 [info] Sent 200 in 12ms 02:41:45.950 [debug] QUERY OK source="source_metadata" db=0.1ms idle=22.2ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [4] 02:41:45.951 [debug] QUERY OK source="media_metadata" db=0.1ms idle=22.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" = ?) [50466] 02:41:45.952 [info] Sent 200 in 31ms 02:41:46.175 [info] GET /sources/7/media/50510/force_download 02:41:46.176 [info] GET /sources/4/force_redownload 02:41:46.176 [info] GET /sources/4/force_index 02:41:46.176 [info] GET /sources/4/sync_files_on_disk 02:41:46.176 [debug] QUERY OK source="settings" db=0.2ms idle=246.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.176 [debug] QUERY OK source="settings" db=0.4ms idle=246.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.176 [info] GET /sources/4/force_download_pending 02:41:46.176 [debug] QUERY OK source="settings" db=0.3ms idle=245.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.176 [debug] QUERY OK source="settings" db=0.1ms idle=225.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.176 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.176 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=225.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.177 [debug] QUERY OK source="settings" db=0.3ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.177 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.177 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.177 [debug] QUERY OK source="settings" db=0.3ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.177 [debug] QUERY OK source="settings" db=0.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.177 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.177 [debug] QUERY OK source="settings" db=0.4ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.177 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.177 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.177 [error] #PID<0.90593.0> running PinchflatWeb.Endpoint (connection #PID<0.90591.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90591.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54984}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90593.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cm6mqLokuN0AAA6k"} ], 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.90591.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54984}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90591.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54984}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90593.0>, params: %{}, path_info: ["sources", "4", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, (truncated) 02:41:46.178 [error] #PID<0.90598.0> running PinchflatWeb.Endpoint (connection #PID<0.90597.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90597.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_download_pending", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54974}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90598.0>, params: %{}, path_info: ["sources", "4", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cm6trt6kdNEAA0sD"} ], 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.90597.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_download_pending", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54974}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90597.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_download_pending", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54974}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90598.0>, params: %{}, path_info: ["sources", "4", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Func (truncated) 02:41:46.177 [error] #PID<0.90590.0> running PinchflatWeb.Endpoint (connection #PID<0.90589.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50510/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50510/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90589.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54966}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90590.0>, params: %{}, path_info: ["sources", "7", "media", "50510", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/7/media/50510/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cm6fRL1nm3oAAA6E"} ], 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.90589.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54966}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/7/media/50510/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90589.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54966}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90590.0>, params: %{}, path_info: ["sources", "7", "media", "50510", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router (truncated) 02:41:46.177 [error] #PID<0.90594.0> running PinchflatWeb.Endpoint (connection #PID<0.90592.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90592.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54988}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90594.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cm6nuc8emYAAA0rj"} ], 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.90592.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54988}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90592.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54988}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90594.0>, params: %{}, path_info: ["sources", "4", "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.106864 (truncated) 02:41:46.178 [error] #PID<0.90596.0> running PinchflatWeb.Endpoint (connection #PID<0.90595.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90595.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/sync_files_on_disk", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54992}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90596.0>, params: %{}, path_info: ["sources", "4", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cm6p4Omk_WEAAA7E"} ], 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.90595.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/sync_files_on_disk", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54992}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90595.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/sync_files_on_disk", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54992}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90596.0>, params: %{}, path_info: ["sources", "4", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fe (truncated) 02:41:46.370 [info] GET /sources/4/force_redownload 02:41:46.370 [debug] QUERY OK source="settings" db=0.1ms idle=193.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.370 [debug] QUERY OK source="settings" db=0.0ms idle=193.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.370 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.372 [info] GET /sources/4/force_index 02:41:46.372 [info] GET /sources/4/force_metadata_refresh 02:41:46.372 [debug] QUERY OK source="settings" db=0.3ms idle=195.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.371 [error] #PID<0.90600.0> running PinchflatWeb.Endpoint (connection #PID<0.90599.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90599.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55002}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90600.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cno1DWDMtl8AAA7k"} ], 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.90599.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55002}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90599.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_redownload", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55002}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90600.0>, params: %{}, path_info: ["sources", "4", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, (truncated) 02:41:46.373 [debug] QUERY OK source="settings" db=0.4ms idle=195.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.373 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.373 [info] GET /sources/4/force_download_pending 02:41:46.374 [info] GET /sources/4/sync_files_on_disk 02:41:46.374 [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 [] 02:41:46.374 [debug] QUERY OK source="settings" db=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.374 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.573 [notice] Handler :file_log switched from :sync to :drop mode 02:41:46.374 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.374 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.373 [error] #PID<0.90602.0> running PinchflatWeb.Endpoint (connection #PID<0.90601.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90601.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55014}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90602.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cnpXPTY_4rUAAA8E"} ], 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.90601.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55014}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90601.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55014}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90602.0>, params: %{}, path_info: ["sources", "4", "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.106864 (truncated) 02:41:46.374 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.375 [debug] QUERY OK source="settings" db=2.5ms idle=195.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.375 [debug] QUERY OK source="settings" db=0.3ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.375 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.374 [error] #PID<0.90606.0> running PinchflatWeb.Endpoint (connection #PID<0.90605.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90605.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_download_pending", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55030}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90606.0>, params: %{}, path_info: ["sources", "4", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cnpxE13ZxdgAA0sj"} ], 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.90605.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_download_pending", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55030}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90605.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_download_pending", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55030}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90606.0>, params: %{}, path_info: ["sources", "4", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Func (truncated) 02:41:46.375 [error] #PID<0.90608.0> running PinchflatWeb.Endpoint (connection #PID<0.90607.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90607.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/sync_files_on_disk", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55044}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90608.0>, params: %{}, path_info: ["sources", "4", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cnp1jBudQkwAA0tD"} ], 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.90607.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/sync_files_on_disk", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55044}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90607.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/sync_files_on_disk", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55044}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90608.0>, params: %{}, path_info: ["sources", "4", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fe (truncated) 02:41:46.376 [error] #PID<0.90604.0> running PinchflatWeb.Endpoint (connection #PID<0.90603.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90603.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55026}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90604.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cnpcd78cxsAAAA8k"} ], 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.90603.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55026}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90603.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55026}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90604.0>, params: %{}, path_info: ["sources", "4", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Func (truncated) 02:41:46.563 [info] GET /sources/4 02:41:46.563 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"delete_files" => "true", "id" => "4"} Pipelines: [:browser] 02:41:46.564 [debug] QUERY OK source="sources" db=0.1ms idle=189.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" = ?) [4] 02:41:46.564 [debug] QUERY OK source="media_profiles" db=0.0ms idle=189.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] 02:41:46.564 [debug] QUERY OK source="tasks" db=0.1ms idle=189.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 02:41:46.565 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=189.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16329] 02:41:46.565 [debug] QUERY OK source="settings" db=0.0ms idle=95.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.565 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:46.565 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:46.566 [info] GET /sources/4/force_metadata_refresh 02:41:46.566 [debug] QUERY OK source="sources" db=0.2ms idle=1.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" = ?) [4] 02:41:46.567 [info] GET /sources/4/media/50466/edit 02:41:46.567 [debug] QUERY OK source="settings" db=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 [] 02:41:46.567 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50466", "source_id" => "4"} Pipelines: [:browser] 02:41:46.567 [debug] QUERY OK source="settings" db=0.2ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.567 [debug] QUERY OK source="media_items" db=0.1ms idle=1.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" = ?) [50466] 02:41:46.567 [debug] QUERY OK source="media_items" db=0.5ms idle=1.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 02:41:46.567 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:46.567 [debug] QUERY OK source="settings" db=0.2ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.568 [debug] QUERY OK source="media_items" db=0.7ms idle=0.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:41:46.568 [debug] QUERY OK source="settings" db=0.5ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.569 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:46.568 [error] #PID<0.90612.0> running PinchflatWeb.Endpoint (connection #PID<0.90611.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90611.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55064}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90612.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/4/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_coXtrajWEwQAAA_E"} ], 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.90611.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55064}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/4/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90611.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 55064}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90612.0>, params: %{}, path_info: ["sources", "4", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Func (truncated) 02:41:46.569 [debug] QUERY OK source="settings" db=0.3ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.569 [debug] QUERY OK source="media_items" db=0.2ms idle=1.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 02:41:46.569 [info] GET /sources/4/media/50259 02:41:46.569 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50259", "source_id" => "4"} Pipelines: [:browser] 02:41:46.570 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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 ? [4, 10, 0] 02:41:46.570 [info] Sent 200 in 3ms 02:41:46.570 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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" = ?) [50259] 02:41:46.570 [info] GET /sources/4/media/50259/edit 02:41:46.570 [debug] QUERY OK source="sources" db=0.2ms idle=1.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:46.570 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50259", "source_id" => "4"} Pipelines: [:browser] 02:41:46.571 [debug] QUERY OK source="tasks" db=0.2ms idle=1.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50259] 02:41:46.571 [debug] QUERY OK source="media_items" db=0.2ms idle=0.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" = ?) [50259] 02:41:46.572 [debug] QUERY OK source="media_items" db=0.6ms idle=1.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"))))) [4] 02:41:46.572 [debug] QUERY OK source="sources" db=0.5ms idle=1.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" = ?) [4] 02:41:46.572 [debug] QUERY OK source="settings" db=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 [] 02:41:46.572 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=0.4ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16289] 02:41:46.572 [debug] QUERY OK source="settings" db=0.4ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.573 [debug] QUERY OK source="media_items" db=1.3ms idle=0.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 ? [4, 10, 0] 02:41:46.573 [debug] QUERY OK source="settings" db=1.0ms 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 [] 02:41:46.574 [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 [] 02:41:46.575 [info] Sent 200 in 11ms 02:41:46.575 [debug] QUERY OK source="settings" db=0.4ms queue=0.3ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.575 [info] Sent 200 in 4ms 02:41:46.576 [debug] QUERY OK source="settings" db=0.1ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.576 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 02:41:46.578 [info] Sent 200 in 8ms 02:41:46.760 [info] GET /sources/4/media/50467/edit 02:41:46.760 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50467", "source_id" => "4"} Pipelines: [:browser] 02:41:46.761 [debug] QUERY OK source="media_items" db=0.3ms idle=186.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" = ?) [50467] 02:41:46.761 [debug] QUERY OK source="settings" db=0.0ms idle=187.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.761 [debug] QUERY OK source="settings" db=0.0ms idle=186.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.762 [debug] QUERY OK source="settings" db=0.0ms idle=185.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.763 [info] Sent 200 in 3ms 02:41:46.765 [info] GET /sources/4/media/50045 02:41:46.765 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50045", "source_id" => "4"} Pipelines: [:browser] 02:41:46.766 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=189.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" = ?) [50045] 02:41:46.767 [debug] QUERY OK source="sources" db=0.2ms idle=5.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:47.576 [notice] Handler :file_log switched from :drop to :sync mode 02:41:46.767 [debug] QUERY OK source="tasks" db=0.3ms idle=5.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50045] 02:41:46.767 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=5.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16247] 02:41:46.768 [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 [] 02:41:46.768 [debug] QUERY OK source="settings" db=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 [] 02:41:46.769 [debug] QUERY OK source="settings" db=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 [] 02:41:46.769 [debug] QUERY OK source="media_profiles" db=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] 02:41:46.771 [info] Sent 200 in 5ms 02:41:46.771 [info] GET /sources/4/media/49837 02:41:46.772 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49837", "source_id" => "4"} Pipelines: [:browser] 02:41:46.772 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms 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" = ?) [49837] 02:41:46.773 [info] GET /sources/4/media/49837/edit 02:41:46.773 [debug] QUERY OK source="tasks" db=0.3ms idle=4.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49837] 02:41:46.773 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49837", "source_id" => "4"} Pipelines: [:browser] 02:41:46.773 [debug] QUERY OK source="sources" db=0.5ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:46.774 [debug] QUERY OK source="media_items" db=0.1ms idle=4.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [49837] 02:41:46.774 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=4.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16216] 02:41:46.774 [info] GET /sources/4/media/50045/edit 02:41:46.774 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50045", "source_id" => "4"} Pipelines: [:browser] 02:41:46.774 [debug] QUERY OK source="settings" db=0.2ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.774 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:46.775 [debug] QUERY OK source="settings" db=0.1ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.775 [debug] QUERY OK source="media_items" db=0.1ms idle=1.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" = ?) [50045] 02:41:46.775 [debug] QUERY OK source="settings" db=0.4ms 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 [] 02:41:46.775 [debug] QUERY OK source="settings" db=0.3ms 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 [] 02:41:46.775 [debug] QUERY OK source="settings" db=0.3ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.776 [info] Sent 200 in 2ms 02:41:46.776 [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 [] 02:41:46.776 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 02:41:46.776 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.777 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.777 [info] Sent 200 in 3ms 02:41:46.778 [info] Sent 200 in 6ms 02:41:46.955 [info] GET /sources/4/media/49630 02:41:46.955 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49630", "source_id" => "4"} Pipelines: [:browser] 02:41:46.956 [debug] QUERY OK source="media_items" db=0.1ms idle=180.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" = ?) [49630] 02:41:46.956 [debug] QUERY OK source="tasks" db=0.1ms idle=179.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49630] 02:41:46.956 [debug] QUERY OK source="sources" db=0.1ms idle=179.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" = ?) [4] 02:41:46.956 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=179.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" = ?) [16185] 02:41:46.957 [debug] QUERY OK source="settings" db=0.1ms idle=179.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.957 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.957 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.958 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:46.959 [info] Sent 200 in 3ms 02:41:46.967 [info] GET /sources/4/media/49424/edit 02:41:46.967 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49424", "source_id" => "4"} Pipelines: [:browser] 02:41:46.968 [debug] QUERY OK source="media_items" db=0.2ms idle=10.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" = ?) [49424] 02:41:46.968 [debug] QUERY OK source="settings" db=0.1ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.968 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:46.969 [debug] QUERY OK source="settings" db=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 [] 02:41:46.969 [info] Sent 200 in 2ms 02:41:46.974 [info] GET /sources/4/media/49006 02:41:46.974 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49006", "source_id" => "4"} Pipelines: [:browser] 02:41:46.974 [info] GET /sources/4/media/49630/edit 02:41:46.974 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49630", "source_id" => "4"} Pipelines: [:browser] 02:41:46.974 [debug] QUERY OK source="media_items" db=0.1ms idle=16.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" = ?) [49006] 02:41:46.975 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=6.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [49630] 02:41:46.975 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [4] 02:41:46.975 [debug] QUERY OK source="tasks" db=0.2ms idle=6.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49006] 02:41:46.975 [debug] QUERY OK source="settings" db=0.3ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.976 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.976 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=0.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16046] 02:41:46.976 [debug] QUERY OK source="settings" db=0.3ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.977 [info] GET /sources/4/media/49424 02:41:46.977 [debug] QUERY OK source="settings" db=0.6ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.977 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49424", "source_id" => "4"} Pipelines: [:browser] 02:41:46.977 [debug] QUERY OK source="media_items" db=0.1ms idle=1.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" = ?) [49424] 02:41:46.977 [info] Sent 200 in 3ms 02:41:46.977 [debug] QUERY OK source="settings" db=0.3ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.978 [debug] QUERY OK source="tasks" db=0.2ms idle=1.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49424] 02:41:46.978 [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 [] 02:41:46.979 [debug] QUERY OK source="sources" db=1.1ms idle=1.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:46.979 [debug] QUERY OK source="media_profiles" db=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] 02:41:46.979 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=1.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16151] 02:41:46.980 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:46.980 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.980 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.980 [info] Sent 200 in 6ms 02:41:46.981 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:46.982 [info] Sent 200 in 5ms 02:41:46.989 [info] GET /sources/4/media/49006/edit 02:41:46.989 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49006", "source_id" => "4"} Pipelines: [:browser] 02:41:46.990 [debug] QUERY OK source="media_items" db=0.2ms idle=9.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" = ?) [49006] 02:41:46.990 [debug] QUERY OK source="settings" db=0.1ms idle=10.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:46.991 [debug] QUERY OK source="settings" db=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 [] 02:41:46.991 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:46.992 [info] Sent 200 in 3ms 02:41:47.167 [info] GET /sources/4/media/48798/edit 02:41:47.167 [info] GET /sources/4/media/48798 02:41:47.167 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48798", "source_id" => "4"} Pipelines: [:browser] 02:41:47.167 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48798", "source_id" => "4"} Pipelines: [:browser] 02:41:47.168 [debug] QUERY OK source="media_items" db=0.3ms idle=186.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" = ?) [48798] 02:41:47.168 [debug] QUERY OK source="media_items" db=0.3ms idle=177.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" = ?) [48798] 02:41:47.168 [debug] QUERY OK source="settings" db=0.1ms idle=177.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.168 [debug] QUERY OK source="tasks" db=0.1ms idle=177.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48798] 02:41:47.168 [debug] QUERY OK source="sources" db=0.2ms idle=177.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" = ?) [4] 02:41:47.169 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:47.169 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=0.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" = ?) [16009] 02:41:47.169 [debug] QUERY OK source="settings" db=0.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.169 [debug] QUERY OK source="settings" db=0.1ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.170 [info] Sent 200 in 2ms 02:41:47.170 [debug] QUERY OK source="settings" db=0.6ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.170 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.170 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:47.171 [info] Sent 200 in 4ms 02:41:47.178 [info] GET /sources/4/media/2255 02:41:47.179 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2255", "source_id" => "4"} Pipelines: [:browser] 02:41:47.179 [debug] QUERY OK source="media_items" db=0.1ms idle=9.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" = ?) [2255] 02:41:47.179 [debug] QUERY OK source="tasks" db=0.0ms idle=10.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2255] 02:41:47.179 [debug] QUERY OK source="sources" db=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" = ?) [4] 02:41:47.180 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:47.180 [debug] QUERY OK source="settings" db=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 [] 02:41:47.180 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:47.181 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 02:41:47.181 [info] Sent 200 in 2ms 02:41:47.283 [info] GET /sources/4/media/48592/edit 02:41:47.283 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48592", "source_id" => "4"} Pipelines: [:browser] 02:41:47.284 [info] GET /sources/4/media/48592 02:41:47.284 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48592", "source_id" => "4"} Pipelines: [:browser] 02:41:47.284 [debug] QUERY OK source="media_items" db=0.5ms idle=104.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" = ?) [48592] 02:41:47.285 [info] GET /sources/4/media/2255/edit 02:41:47.285 [debug] QUERY OK source="media_items" db=0.6ms idle=104.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" = ?) [48592] 02:41:47.285 [debug] QUERY OK source="settings" db=0.2ms idle=104.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.285 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2255", "source_id" => "4"} Pipelines: [:browser] 02:41:47.286 [debug] QUERY OK source="media_items" db=0.5ms idle=0.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2255] 02:41:47.286 [debug] QUERY OK source="sources" db=0.6ms idle=1.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:47.286 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=105.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.289 [debug] QUERY OK source="tasks" db=3.2ms idle=104.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48592] 02:41:47.289 [debug] QUERY OK source="settings" db=2.0ms queue=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.290 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=3.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15975] 02:41:47.290 [debug] QUERY OK source="settings" db=2.5ms 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 [] 02:41:47.291 [debug] QUERY OK source="settings" db=0.6ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.290 [debug] QUERY OK source="settings" db=1.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.291 [debug] QUERY OK source="settings" db=0.5ms queue=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 [] 02:41:47.292 [debug] QUERY OK source="settings" db=0.3ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.293 [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 [] 02:41:47.293 [info] Sent 200 in 8ms 02:41:47.294 [info] Sent 200 in 11ms 02:41:47.295 [debug] QUERY OK source="media_profiles" db=0.7ms 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] 02:41:47.296 [info] Sent 200 in 12ms 02:41:47.368 [info] GET /sources/4/media/2257/edit 02:41:47.368 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2257", "source_id" => "4"} Pipelines: [:browser] 02:41:47.368 [debug] QUERY OK source="media_items" db=0.2ms idle=77.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" = ?) [2257] 02:41:47.369 [debug] QUERY OK source="settings" db=0.0ms idle=77.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.369 [debug] QUERY OK source="settings" db=0.0ms idle=76.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.369 [debug] QUERY OK source="settings" db=0.0ms idle=76.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.370 [info] Sent 200 in 2ms 02:41:47.374 [info] GET /sources/4/media/2257 02:41:47.374 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2257", "source_id" => "4"} Pipelines: [:browser] 02:41:47.375 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=79.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" = ?) [2257] 02:41:47.375 [debug] QUERY OK source="sources" db=0.1ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:47.375 [debug] QUERY OK source="tasks" db=0.2ms idle=6.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2257] 02:41:47.375 [debug] QUERY OK source="settings" db=0.1ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.376 [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 [] 02:41:47.376 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:47.377 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:47.378 [info] Sent 200 in 3ms 02:41:47.378 [info] GET /sources/4/media/2259 02:41:47.378 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2259", "source_id" => "4"} Pipelines: [:browser] 02:41:47.378 [debug] QUERY OK source="media_items" db=0.1ms idle=3.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2259] 02:41:47.379 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [4] 02:41:47.379 [debug] QUERY OK source="tasks" db=0.1ms idle=3.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2259] 02:41:47.379 [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 [] 02:41:47.380 [debug] QUERY OK source="settings" db=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.380 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.380 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:47.381 [info] Sent 200 in 3ms 02:41:47.496 [info] GET /sources/4/media/2259/edit 02:41:47.496 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2259", "source_id" => "4"} Pipelines: [:browser] 02:41:47.497 [debug] QUERY OK source="media_items" db=0.2ms idle=117.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" = ?) [2259] 02:41:47.497 [debug] QUERY OK source="settings" db=0.0ms idle=117.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.497 [debug] QUERY OK source="settings" db=0.0ms idle=117.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.498 [debug] QUERY OK source="settings" db=0.0ms idle=117.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.498 [info] Sent 200 in 2ms 02:41:47.501 [info] GET /sources/4/media/2261/edit 02:41:47.501 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2261", "source_id" => "4"} Pipelines: [:browser] 02:41:47.501 [debug] QUERY OK source="media_items" db=0.1ms idle=120.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2261] 02:41:47.502 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:47.502 [info] GET /sources/4/media/2261 02:41:47.502 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2261", "source_id" => "4"} Pipelines: [:browser] 02:41:47.502 [debug] QUERY OK source="settings" db=0.5ms 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 [] 02:41:47.503 [debug] QUERY OK source="media_items" db=0.3ms idle=4.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2261] 02:41:47.503 [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 [] 02:41:47.504 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [4] 02:41:47.504 [debug] QUERY OK source="tasks" db=0.8ms idle=1.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2261] 02:41:47.504 [info] Sent 200 in 3ms 02:41:47.505 [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 [] 02:41:47.505 [debug] QUERY OK source="settings" db=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.505 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:47.506 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 02:41:47.507 [info] Sent 200 in 4ms 02:41:47.565 [info] GET /sources/4/media/2262 02:41:47.565 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2262", "source_id" => "4"} Pipelines: [:browser] 02:41:47.566 [debug] QUERY OK source="media_items" db=0.6ms idle=60.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" = ?) [2262] 02:41:47.566 [debug] QUERY OK source="tasks" db=0.1ms idle=61.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2262] 02:41:47.568 [debug] QUERY OK source="sources" db=1.2ms idle=60.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" = ?) [4] 02:41:47.568 [debug] QUERY OK source="settings" db=0.1ms idle=62.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.568 [debug] QUERY OK source="settings" db=0.1ms idle=23.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.569 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.570 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:47.571 [info] Sent 200 in 5ms 02:41:47.578 [info] GET /sources/4/media/2264 02:41:47.578 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2264", "source_id" => "4"} Pipelines: [:browser] 02:41:47.579 [debug] QUERY OK source="media_items" db=0.2ms 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 WHERE (m0."id" = ?) [2264] 02:41:47.579 [debug] QUERY OK source="tasks" db=0.1ms idle=10.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2264] 02:41:47.579 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [4] 02:41:47.580 [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 [] 02:41:47.580 [debug] QUERY OK source="settings" db=0.1ms idle=10.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.581 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.581 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 02:41:47.582 [info] Sent 200 in 4ms 02:41:47.799 [info] GET /sources/4/media/2264/edit 02:41:47.799 [info] GET /sources/4/media/2268/edit 02:41:47.799 [info] GET /sources/4/media/2262/edit 02:41:47.799 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2264", "source_id" => "4"} Pipelines: [:browser] 02:41:47.799 [info] GET /sources/4/media/2268 02:41:47.799 [info] GET /sources/4/media/2266/edit 02:41:47.799 [info] GET /sources/4/media/2266 02:41:47.799 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2268", "source_id" => "4"} Pipelines: [:browser] 02:41:47.799 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2262", "source_id" => "4"} Pipelines: [:browser] 02:41:47.799 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2266", "source_id" => "4"} Pipelines: [:browser] 02:41:47.799 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2266", "source_id" => "4"} Pipelines: [:browser] 02:41:47.799 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2268", "source_id" => "4"} Pipelines: [:browser] 02:41:47.800 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=218.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" = ?) [2268] 02:41:47.800 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=219.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" = ?) [2264] 02:41:47.800 [debug] QUERY OK source="media_items" db=0.5ms idle=218.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" = ?) [2266] 02:41:47.800 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=219.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" = ?) [2262] 02:41:47.800 [debug] QUERY OK source="media_items" db=0.3ms queue=0.3ms idle=0.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2268] 02:41:47.800 [debug] QUERY OK source="media_items" db=1.1ms idle=218.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" = ?) [2266] 02:41:47.800 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.801 [debug] QUERY OK source="settings" db=0.3ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.801 [debug] QUERY OK source="sources" db=0.3ms idle=0.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" = ?) [4] 02:41:47.801 [debug] QUERY OK source="tasks" db=0.1ms queue=0.2ms idle=0.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2266] 02:41:47.801 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.801 [debug] QUERY OK source="tasks" db=0.2ms idle=0.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2268] 02:41:47.801 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:47.801 [debug] QUERY OK source="settings" db=0.3ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.801 [debug] QUERY OK source="settings" db=0.1ms queue=0.2ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.801 [debug] QUERY OK source="settings" db=0.6ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.801 [debug] QUERY OK source="settings" db=0.3ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.801 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.801 [debug] QUERY OK source="settings" db=0.2ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.802 [debug] QUERY OK source="settings" db=0.3ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.802 [debug] QUERY OK source="settings" db=0.9ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.802 [debug] QUERY OK source="settings" db=0.3ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.802 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.802 [info] Sent 200 in 3ms 02:41:47.802 [debug] QUERY OK source="settings" db=0.4ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.803 [debug] QUERY OK source="settings" db=1.1ms queue=0.1ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.803 [info] Sent 200 in 4ms 02:41:47.803 [debug] QUERY OK source="settings" db=0.2ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.803 [debug] QUERY OK source="settings" db=0.2ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.802 [info] Sent 200 in 3ms 02:41:47.803 [debug] QUERY OK source="settings" db=0.4ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:47.803 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.2ms idle=0.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:47.804 [debug] QUERY OK source="media_profiles" db=0.5ms idle=0.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:47.804 [info] Sent 200 in 5ms 02:41:47.804 [info] Sent 200 in 5ms 02:41:47.805 [info] Sent 200 in 6ms 02:41:48.147 [info] GET /sources/4/media/2270 02:41:48.147 [info] GET /sources/4/media/2272 02:41:48.147 [info] GET /sources/4/media/2270/edit 02:41:48.147 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2270", "source_id" => "4"} Pipelines: [:browser] 02:41:48.147 [info] GET /sources/4/media/2272/edit 02:41:48.147 [info] GET /download_logs 02:41:48.147 [info] GET /sources/6/media/50411/edit 02:41:48.147 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2272", "source_id" => "4"} Pipelines: [:browser] 02:41:48.147 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2270", "source_id" => "4"} Pipelines: [:browser] 02:41:48.147 [info] GET /sources/6/media/50411/force_download 02:41:48.148 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50411", "source_id" => "6"} Pipelines: [:browser] 02:41:48.147 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2272", "source_id" => "4"} Pipelines: [:browser] 02:41:48.148 [debug] Processing with PinchflatWeb.Settings.SettingController.download_logs/2 Parameters: %{} Pipelines: [:browser] 02:41:48.148 [debug] QUERY OK source="settings" db=0.2ms idle=344.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.148 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=344.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" = ?) [2270] 02:41:48.148 [info] Sent 200 in 833µs 02:41:48.148 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms 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."id" = ?) [2270] 02:41:48.149 [debug] QUERY OK source="settings" db=0.2ms queue=0.3ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.149 [debug] QUERY OK source="media_items" db=1.0ms 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."id" = ?) [50411] 02:41:48.149 [debug] QUERY OK source="media_items" db=1.1ms idle=344.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" = ?) [2272] 02:41:48.149 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.149 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:48.149 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=0.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2270] 02:41:48.149 [debug] QUERY OK source="settings" db=0.2ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.150 [debug] QUERY OK source="sources" db=0.2ms queue=0.8ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:48.151 [debug] QUERY OK source="media_items" db=1.6ms queue=0.6ms idle=0.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2272] 02:41:48.150 [error] #PID<0.90742.0> running PinchflatWeb.Endpoint (connection #PID<0.90739.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/6/media/50411/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/6/media/50411/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90739.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/50411/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 60800}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90742.0>, params: %{}, path_info: ["sources", "6", "media", "50411", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/6/media/50411/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cuQrmpuH3PsAA05j"} ], 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.90739.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/50411/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 60800}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/6/media/50411/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90739.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/50411/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 60800}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90742.0>, params: %{}, path_info: ["sources", "6", "media", "50411", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router (truncated) 02:41:48.151 [debug] QUERY OK source="tasks" db=1.9ms queue=0.1ms idle=0.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [2272] 02:41:48.152 [debug] QUERY OK source="sources" db=2.2ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:41:48.150 [debug] QUERY OK source="settings" db=0.2ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.153 [debug] QUERY OK source="settings" db=3.3ms queue=0.1ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.153 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.153 [debug] QUERY OK source="settings" db=0.2ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.153 [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 [] 02:41:48.153 [debug] QUERY OK source="settings" db=0.5ms queue=1.8ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.154 [debug] QUERY OK source="settings" db=0.1ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.154 [debug] QUERY OK source="settings" db=0.1ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.154 [debug] QUERY OK source="settings" db=0.2ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.154 [info] Sent 200 in 6ms 02:41:48.154 [debug] QUERY OK source="settings" db=0.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.155 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.155 [debug] QUERY OK source="settings" db=0.3ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.155 [info] Sent 200 in 7ms 02:41:48.155 [debug] QUERY OK source="settings" db=0.2ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.156 [info] Sent 200 in 8ms 02:41:48.156 [debug] QUERY OK source="media_profiles" db=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] 02:41:48.156 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:48.157 [info] Sent 200 in 9ms 02:41:48.157 [info] Sent 200 in 9ms 02:41:48.230 [info] GET /sources/6/media/50411 02:41:48.231 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50411", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 02:41:48.231 [debug] QUERY OK source="media_items" db=0.2ms 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 WHERE (m0."id" = ?) [50411] 02:41:48.231 [debug] QUERY OK source="tasks" db=0.1ms idle=76.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50411] 02:41:48.232 [debug] QUERY OK source="sources" db=0.1ms idle=76.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" = ?) [6] 02:41:48.232 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=75.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 (?,?)) [16293, 16337] 02:41:48.232 [debug] QUERY OK source="settings" db=0.0ms idle=76.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.232 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:48.233 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:41:48.233 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:41:48.234 [info] Sent 200 in 3ms 02:41:48.358 [info] GET /sources/6/media/50411/force_download 02:41:48.359 [debug] QUERY OK source="settings" db=0.1ms idle=126.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:41:48.359 [debug] QUERY OK source="settings" db=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 [] 02:41:48.359 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:41:48.359 [error] #PID<0.90755.0> running PinchflatWeb.Endpoint (connection #PID<0.90754.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/6/media/50411/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/6/media/50411/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90754.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/50411/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 60808}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90755.0>, params: %{}, path_info: ["sources", "6", "media", "50411", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}, {"x-forwarded-for", "158.69.55.82"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "158.69.55.82"} ], request_path: "/sources/6/media/50411/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_cvC7DBT_A6sABYXC"} ], 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.90754.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/50411/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 60808}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, 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/6/media/50411/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.90754.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/50411/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 60808}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "x-forwarded-for" => "158.69.55.82", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "158.69.55.82" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWlYxZFdIdXpYVHFZXzdfWW9CdFNQZGRL.tls83nWptwULODODK4Y3XN2kQWgeaq3V0VQybxsriXk" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.90755.0>, params: %{}, path_info: ["sources", "6", "media", "50411", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router (truncated) 02:42:00.302 [info] {"source":"oban","duration":269,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:42:09.051 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:42:39.053 [info] {"source":"oban","duration":1213,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 02:43:00.303 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:43:09.057 [info] {"source":"oban","duration":3090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:43:39.059 [info] {"source":"oban","duration":1237,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:44:00.304 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:44:09.060 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:44:39.062 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:45:00.305 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:45:09.064 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:45:39.066 [info] {"source":"oban","duration":1776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":2} 02:45:49.793 [info] GET / 02:45:49.794 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:45:49.794 [debug] QUERY OK source="settings" db=0.1ms idle=1592.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:45:49.794 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1592.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:45:49.794 [debug] QUERY OK source="sources" db=0.0ms idle=1592.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:45:49.832 [debug] QUERY OK source="media_items" db=37.9ms idle=1592.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:45:49.835 [debug] QUERY OK source="media_items" db=2.5ms idle=38.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:45:49.836 [debug] QUERY OK source="settings" db=0.2ms idle=41.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:45:49.836 [debug] QUERY OK source="settings" db=0.1ms idle=41.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:45:49.836 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:45:49.837 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 02:45:49.838 [debug] QUERY OK source="media_items" db=1.0ms idle=2.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)) [] 02:45:49.839 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 02:45:49.839 [debug] QUERY OK source="sources" db=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" IN (?,?,?)) [6, 4, 7] 02:45:49.848 [debug] QUERY OK source="media_items" db=8.3ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 02:45:49.849 [debug] QUERY OK source="media_items" db=0.9ms idle=11.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] 02:45:49.850 [debug] QUERY OK source="sources" db=0.3ms idle=11.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 (?,?)) [7, 3] 02:45:49.851 [info] Sent 200 in 57ms 02:46:00.306 [info] {"source":"oban","duration":214,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:46:09.068 [info] {"source":"oban","duration":1196,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:46:39.069 [info] {"source":"oban","duration":1027,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:46:42.296 [info] GET / 02:46:42.296 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:46:42.297 [debug] QUERY OK source="settings" db=0.3ms idle=1094.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:42.297 [debug] QUERY OK source="media_profiles" db=0.0ms idle=446.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:46:42.297 [debug] QUERY OK source="sources" db=0.0ms idle=95.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:46:42.299 [debug] QUERY OK source="media_items" db=2.2ms idle=95.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:46:42.300 [debug] QUERY OK source="media_items" db=0.8ms idle=98.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:46:42.301 [debug] QUERY OK source="settings" db=0.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 [] 02:46:42.301 [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 [] 02:46:42.301 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:46:42.302 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 02:46:42.303 [debug] QUERY OK source="media_items" db=0.8ms idle=1.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)) [] 02:46:42.303 [debug] QUERY OK source="media_items" db=0.2ms idle=2.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:46:42.304 [debug] QUERY OK source="sources" db=0.1ms idle=2.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 (?,?,?)) [6, 4, 7] 02:46:42.312 [debug] QUERY OK source="media_items" db=7.6ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 02:46:42.313 [debug] QUERY OK source="media_items" db=0.9ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 02:46:42.313 [debug] QUERY OK source="sources" db=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 (?,?)) [7, 3] 02:46:42.314 [info] Sent 200 in 18ms 02:46:44.941 [info] GET /sources/7/media/32741 02:46:44.941 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32741", "source_id" => "7"} Pipelines: [:browser] 02:46:44.941 [debug] QUERY OK source="media_items" db=0.2ms idle=739.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" = ?) [32741] 02:46:44.942 [debug] QUERY OK source="tasks" db=0.1ms idle=740.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32741] 02:46:44.942 [debug] QUERY OK source="sources" db=0.2ms idle=740.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] 02:46:44.942 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=740.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15089, 15575, 16074] 02:46:44.943 [debug] QUERY OK source="settings" db=0.0ms idle=89.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:44.943 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:46:44.943 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:44.944 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:46:44.945 [info] Sent 200 in 4ms 02:46:47.622 [info] GET /sources/3/media/37712 02:46:47.623 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "37712", "source_id" => "3"} Pipelines: [:browser] 02:46:47.623 [debug] QUERY OK source="media_items" db=0.1ms idle=1421.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" = ?) [37712] 02:46:47.623 [debug] QUERY OK source="sources" db=0.1ms idle=1421.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:46:47.624 [debug] QUERY OK source="tasks" db=0.3ms idle=1421.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [37712] 02:46:47.624 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1422.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?,?)) [14777, 15300, 15838, 16324] 02:46:47.624 [debug] QUERY OK source="settings" db=0.0ms idle=769.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:47.625 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:46:47.625 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:47.625 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:46:47.626 [info] Sent 200 in 3ms 02:46:50.054 [info] GET /sources/7 02:46:50.054 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 02:46:50.055 [debug] QUERY OK source="sources" db=0.1ms idle=853.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] 02:46:50.055 [debug] QUERY OK source="media_profiles" db=0.1ms idle=853.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] 02:46:50.056 [debug] QUERY OK source="tasks" db=0.3ms idle=853.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"] 02:46:50.056 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=854.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16332] 02:46:50.056 [debug] QUERY OK source="settings" db=0.1ms idle=198.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:50.057 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:50.057 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:50.058 [debug] QUERY OK source="sources" db=0.1ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:46:50.060 [debug] QUERY OK source="media_items" db=1.5ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 02:46:50.067 [debug] QUERY OK source="media_items" db=6.6ms idle=3.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 02:46:50.068 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:46:50.070 [debug] QUERY OK source="media_items" db=1.8ms idle=10.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 02:46:50.072 [debug] QUERY OK source="media_items" db=1.9ms idle=11.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:46:50.073 [debug] QUERY OK source="sources" db=0.0ms idle=12.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:46:50.074 [debug] QUERY OK source="media_items" db=1.6ms idle=6.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [7] 02:46:50.081 [debug] QUERY OK source="media_items" db=6.2ms idle=6.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 02:46:50.082 [info] Sent 200 in 27ms 02:46:52.226 [info] GET /sources/4/media/50467 02:46:52.226 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50467", "source_id" => "4"} Pipelines: [:browser] 02:46:52.227 [debug] QUERY OK source="media_items" db=0.2ms idle=1025.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" = ?) [50467] 02:46:52.227 [debug] QUERY OK source="tasks" db=0.2ms idle=1025.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50467] 02:46:52.227 [debug] QUERY OK source="sources" db=0.2ms idle=1025.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" = ?) [4] 02:46:52.228 [debug] QUERY OK source="oban_jobs" db=0.1ms queue=0.1ms idle=1026.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16328] 02:46:52.228 [debug] QUERY OK source="settings" db=0.0ms idle=367.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:52.228 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:46:52.229 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:46:52.229 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:46:52.230 [info] Sent 200 in 4ms 02:46:54.226 [info] GET /sources/4/media/50466 02:46:54.227 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50466", "source_id" => "4"} Pipelines: [:browser] 02:46:54.227 [debug] QUERY OK source="media_items" db=0.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."id" = ?) [50466] 02:46:54.228 [debug] QUERY OK source="tasks" db=0.1ms idle=25.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50466] 02:46:54.228 [debug] QUERY OK source="sources" db=0.2ms idle=25.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" = ?) [4] 02:46:54.228 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=26.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16327] 02:46:54.228 [debug] QUERY OK source="settings" db=0.0ms idle=26.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:54.228 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:46:54.228 [debug] QUERY OK source="settings" db=0.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:54.229 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:46:54.230 [info] Sent 200 in 3ms 02:46:55.974 [info] GET /app_info 02:46:55.974 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 02:46:55.974 [debug] QUERY OK source="settings" db=0.1ms idle=1745.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:55.975 [debug] QUERY OK source="settings" db=0.0ms idle=1745.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:55.975 [debug] QUERY OK source="settings" db=0.0ms idle=1745.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:55.975 [debug] QUERY OK source="settings" db=0.1ms idle=1112.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:55.975 [debug] QUERY OK source="settings" db=0.0ms idle=111.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:55.976 [info] Sent 200 in 2ms 02:46:57.559 [info] GET /sources/3 02:46:57.560 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 02:46:57.560 [debug] QUERY OK source="sources" db=0.2ms idle=694.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:46:57.560 [debug] QUERY OK source="media_profiles" db=0.1ms idle=358.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] 02:46:57.561 [debug] QUERY OK source="tasks" db=0.3ms idle=359.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 02:46:57.561 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=359.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" = ?) [16326] 02:46:57.561 [debug] QUERY OK source="settings" db=0.0ms idle=359.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:57.561 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:46:57.562 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:46:57.562 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:46:57.564 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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")))) [3] 02:46:57.565 [debug] QUERY OK source="media_items" db=1.0ms idle=2.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 ? [3, 10, 0] 02:46:57.566 [debug] QUERY OK source="sources" db=0.0ms idle=4.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:46:57.566 [debug] QUERY OK source="media_items" db=0.2ms idle=4.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 02:46:57.567 [debug] QUERY OK source="media_items" db=0.4ms idle=3.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:46:57.567 [debug] QUERY OK source="sources" db=0.0ms idle=3.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] 02:46:57.568 [debug] QUERY OK source="media_items" db=0.4ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [3] 02:46:57.569 [debug] QUERY OK source="media_items" db=0.6ms idle=2.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 02:46:57.569 [info] Sent 200 in 9ms 02:46:59.001 [info] GET /sources/3/media/47311 02:46:59.001 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47311", "source_id" => "3"} Pipelines: [:browser] 02:46:59.001 [debug] QUERY OK source="media_items" db=0.3ms idle=1433.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" = ?) [47311] 02:46:59.002 [debug] QUERY OK source="sources" db=0.1ms idle=1432.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:46:59.002 [debug] QUERY OK source="tasks" db=0.2ms idle=1433.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47311] 02:46:59.002 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1135.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 (?,?,?,?,?,?,?,?,?,?)) [15755, 16007, 16044, 16109, 16149, 16183, 16214, 16245, 16287, 16325] 02:46:59.003 [debug] QUERY OK source="settings" db=0.0ms idle=135.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:59.003 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:46:59.003 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:46:59.004 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:46:59.004 [info] Sent 200 in 3ms 02:47:00.299 [info] GET /sources/7/media/32687 02:47:00.300 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32687", "source_id" => "7"} Pipelines: [:browser] 02:47:00.300 [debug] QUERY OK source="media_items" db=0.2ms idle=431.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" = ?) [32687] 02:47:00.301 [debug] QUERY OK source="tasks" db=0.1ms idle=98.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32687] 02:47:00.301 [debug] QUERY OK source="sources" db=0.3ms idle=98.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] 02:47:00.301 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=99.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15088, 15574, 16073] 02:47:00.301 [debug] QUERY OK source="settings" db=0.0ms idle=99.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:00.301 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:00.302 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:00.302 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:00.303 [info] Sent 200 in 3ms 02:47:00.307 [info] {"source":"oban","duration":156,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:47:01.450 [info] GET /media_profiles 02:47:01.451 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 02:47:01.451 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1149.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", (SELECT count(ss0."id") AS "result" FROM "sources" AS ss0 WHERE (ss0."media_profile_id" = m0."id")) FROM "media_profiles" AS m0 WHERE (m0."marked_for_deletion_at" IS NULL) ORDER BY m0."name" [] 02:47:01.451 [debug] QUERY OK source="settings" db=0.0ms idle=1149.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:01.452 [debug] QUERY OK source="settings" db=0.0ms idle=1149.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:01.452 [debug] QUERY OK source="settings" db=0.0ms idle=1145.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:01.452 [info] Sent 200 in 1ms 02:47:02.495 [info] GET /sources/4 02:47:02.495 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 02:47:02.495 [debug] QUERY OK source="sources" db=0.1ms idle=1043.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" = ?) [4] 02:47:02.495 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1043.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] 02:47:02.496 [debug] QUERY OK source="tasks" db=0.4ms idle=1044.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 02:47:02.496 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1044.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16329] 02:47:02.497 [debug] QUERY OK source="settings" db=0.1ms idle=626.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:02.497 [debug] QUERY OK source="settings" db=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 [] 02:47:02.497 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:02.498 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:47:02.499 [debug] QUERY OK source="media_items" db=0.8ms idle=2.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")))) [4] 02:47:02.500 [debug] QUERY OK source="media_items" db=0.7ms idle=2.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 ? [4, 10, 0] 02:47:02.501 [debug] QUERY OK source="sources" db=0.0ms idle=3.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 02:47:02.501 [debug] QUERY OK source="media_items" db=0.1ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 02:47:02.501 [debug] QUERY OK source="media_items" db=0.4ms idle=2.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:47:02.502 [debug] QUERY OK source="sources" db=0.1ms idle=2.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" = ?) [4] 02:47:02.503 [debug] QUERY OK source="media_items" db=0.3ms idle=2.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [4] 02:47:02.503 [debug] QUERY OK source="media_items" db=0.4ms idle=2.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 02:47:02.504 [info] Sent 200 in 9ms 02:47:03.440 [info] GET /sources/6 02:47:03.440 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 02:47:03.441 [debug] QUERY OK source="sources" db=0.1ms idle=939.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] 02:47:03.441 [debug] QUERY OK source="media_profiles" db=0.0ms idle=938.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] 02:47:03.441 [debug] QUERY OK source="tasks" db=0.2ms idle=938.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 02:47:03.442 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=938.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16333] 02:47:03.442 [debug] QUERY OK source="settings" db=0.0ms idle=570.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:03.442 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:03.442 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:03.443 [debug] QUERY OK source="sources" db=0.0ms idle=1.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:47:03.443 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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")))) [6] 02:47:03.444 [debug] QUERY OK source="media_items" db=0.2ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:47:03.444 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:47:03.445 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 02:47:03.445 [debug] QUERY OK source="media_items" db=0.3ms idle=1.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:47:03.446 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:47:03.446 [debug] QUERY OK source="media_items" db=0.1ms idle=1.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [6] 02:47:03.446 [debug] QUERY OK source="media_items" db=0.2ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 02:47:03.447 [info] Sent 200 in 6ms 02:47:04.299 [info] GET /settings 02:47:04.299 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 02:47:04.300 [debug] QUERY OK source="settings" db=0.1ms idle=854.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:04.300 [debug] QUERY OK source="settings" db=0.0ms idle=854.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:04.300 [debug] QUERY OK source="settings" db=0.0ms idle=854.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:04.301 [debug] QUERY OK source="settings" db=0.0ms idle=854.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:04.301 [info] Sent 200 in 2ms 02:47:05.055 [info] GET /sources 02:47:05.056 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 02:47:05.056 [debug] QUERY OK source="settings" db=0.1ms idle=756.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:05.056 [debug] QUERY OK source="settings" db=0.1ms idle=756.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:05.057 [debug] QUERY OK source="settings" db=0.0ms idle=756.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:05.057 [debug] QUERY OK source="settings" db=0.0ms idle=756.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:05.057 [debug] QUERY OK source="settings" db=0.0ms idle=184.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:05.063 [debug] QUERY OK source="sources" db=5.2ms idle=1.7ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 02:47:05.069 [debug] QUERY OK source="sources" db=5.4ms 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", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 02:47:05.071 [info] Sent 200 in 15ms 02:47:05.733 [info] GET /sources/7/media/50300 02:47:05.733 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50300", "source_id" => "7"} Pipelines: [:browser] 02:47:05.733 [debug] QUERY OK source="media_items" db=0.1ms idle=676.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" = ?) [50300] 02:47:05.734 [debug] QUERY OK source="tasks" db=0.1ms idle=676.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50300] 02:47:05.734 [debug] QUERY OK source="sources" db=0.1ms idle=676.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:47:05.734 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=670.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" = ?) [16291] 02:47:05.735 [debug] QUERY OK source="settings" db=0.3ms idle=665.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:05.735 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:05.735 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:05.736 [debug] QUERY OK source="media_profiles" db=0.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] 02:47:05.737 [info] Sent 200 in 4ms 02:47:06.362 [info] GET /media/df122513-c542-4d00-ae18-8cf8332afdc7/stream 02:47:06.362 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "df122513-c542-4d00-ae18-8cf8332afdc7", "v" => "1792206202"} Pipelines: [:maybe_basic_auth] 02:47:06.363 [debug] QUERY OK source="media_items" db=0.2ms idle=627.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["df122513-c542-4d00-ae18-8cf8332afdc7"] 02:47:06.363 [debug] Invalid range request for media item: df122513-c542-4d00-ae18-8cf8332afdc7 - serving full file 02:47:06.363 [info] Sent 200 in 843µs 02:47:09.071 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 02:47:10.942 [info] GET /sources/4/media/50466 02:47:10.943 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50466", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 02:47:10.944 [debug] QUERY OK source="media_items" db=1.3ms idle=1741.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" = ?) [50466] 02:47:10.945 [debug] QUERY OK source="sources" db=0.1ms idle=742.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" = ?) [4] 02:47:10.945 [debug] QUERY OK source="tasks" db=0.3ms idle=1065.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50466] 02:47:10.946 [debug] QUERY OK source="oban_jobs" db=1.3ms idle=743.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16327] 02:47:10.947 [debug] QUERY OK source="settings" db=0.0ms idle=65.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:10.947 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:10.947 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:10.948 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:10.949 [info] Sent 200 in 6ms 02:47:11.408 [info] GET /sources/3/media/7021 02:47:11.408 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "7021", "source_id" => "3"} Pipelines: [:browser] 02:47:11.409 [debug] QUERY OK source="media_items" db=0.1ms 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 WHERE (m0."id" = ?) [7021] 02:47:11.409 [debug] QUERY OK source="sources" db=0.1ms idle=462.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:47:11.409 [debug] QUERY OK source="tasks" db=0.2ms idle=462.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [7021] 02:47:11.410 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=462.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 (?,?,?,?)) [14812, 15293, 15794, 16281] 02:47:11.410 [debug] QUERY OK source="settings" db=0.0ms idle=462.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:11.410 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:11.411 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:11.411 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:11.412 [info] Sent 200 in 3ms 02:47:11.925 [info] GET /sources/7/media/32633 02:47:11.926 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32633", "source_id" => "7"} Pipelines: [:browser] 02:47:11.926 [debug] QUERY OK source="media_items" db=0.2ms idle=515.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" = ?) [32633] 02:47:11.927 [debug] QUERY OK source="sources" db=0.1ms idle=515.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] 02:47:11.927 [debug] QUERY OK source="tasks" db=0.2ms idle=515.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32633] 02:47:11.927 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=515.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15067, 15558, 16058] 02:47:11.928 [debug] QUERY OK source="settings" db=0.1ms idle=45.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:11.928 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:11.928 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:11.929 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:11.930 [info] Sent 200 in 4ms 02:47:12.442 [info] GET /sources/6/media/50411 02:47:12.442 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50411", "source_id" => "6"} Pipelines: [:browser] 02:47:12.443 [debug] QUERY OK source="media_items" db=0.1ms idle=515.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" = ?) [50411] 02:47:12.443 [debug] QUERY OK source="tasks" db=0.1ms idle=515.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50411] 02:47:12.443 [debug] QUERY OK source="sources" db=0.3ms idle=515.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:47:12.444 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=515.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16293, 16337] 02:47:12.444 [debug] QUERY OK source="settings" db=0.0ms idle=515.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:12.444 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:12.445 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:12.445 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:12.446 [info] Sent 200 in 3ms 02:47:12.941 [info] GET /sources/7/media/32628 02:47:12.942 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32628", "source_id" => "7"} Pipelines: [:browser] 02:47:12.942 [debug] QUERY OK source="media_items" db=0.2ms idle=497.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" = ?) [32628] 02:47:12.942 [debug] QUERY OK source="tasks" db=0.1ms idle=498.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32628] 02:47:12.943 [debug] QUERY OK source="sources" db=0.2ms idle=497.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:47:12.943 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=497.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15066, 15557, 16057] 02:47:12.943 [debug] QUERY OK source="settings" db=0.0ms idle=60.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:12.944 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:12.944 [debug] QUERY OK source="settings" db=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 [] 02:47:12.944 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:12.945 [info] Sent 200 in 3ms 02:47:13.407 [info] GET /sources/4/media/49424 02:47:13.408 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49424", "source_id" => "4"} Pipelines: [:browser] 02:47:13.408 [debug] QUERY OK source="media_items" db=0.1ms idle=464.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" = ?) [49424] 02:47:13.408 [debug] QUERY OK source="sources" db=0.1ms idle=464.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" = ?) [4] 02:47:13.408 [debug] QUERY OK source="tasks" db=0.1ms idle=464.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49424] 02:47:13.409 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=464.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16151] 02:47:13.409 [debug] QUERY OK source="settings" db=0.0ms idle=464.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:13.409 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:13.409 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:13.410 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:13.411 [info] Sent 200 in 3ms 02:47:13.946 [info] GET /sources/6/media/42082/edit 02:47:13.946 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "42082", "source_id" => "6"} Pipelines: [:browser] 02:47:13.946 [debug] QUERY OK source="media_items" db=0.2ms idle=536.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" = ?) [42082] 02:47:13.947 [debug] QUERY OK source="settings" db=0.0ms idle=537.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:13.947 [debug] QUERY OK source="settings" db=0.0ms idle=537.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:13.947 [debug] QUERY OK source="settings" db=0.0ms idle=537.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:13.948 [info] Sent 200 in 1ms 02:47:14.446 [info] GET /sources/6/media/47466 02:47:14.446 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47466", "source_id" => "6"} Pipelines: [:browser] 02:47:14.447 [debug] QUERY OK source="media_items" db=0.2ms idle=562.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [47466] 02:47:14.447 [debug] QUERY OK source="tasks" db=0.1ms idle=500.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47466] 02:47:14.447 [debug] QUERY OK source="sources" db=0.2ms idle=500.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" = ?) [6] 02:47:14.447 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=500.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 (?,?)) [15764, 15950] 02:47:14.448 [debug] QUERY OK source="settings" db=0.0ms idle=500.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:14.448 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:14.448 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:14.448 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:14.449 [info] Sent 200 in 3ms 02:47:14.900 [info] GET /sources/5 02:47:14.901 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 02:47:14.901 [debug] QUERY OK source="sources" db=0.2ms idle=453.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:47:14.901 [debug] QUERY OK source="media_profiles" db=0.1ms idle=453.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] 02:47:14.902 [debug] QUERY OK source="tasks" db=0.3ms idle=453.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 02:47:14.902 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=453.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16319] 02:47:14.902 [debug] QUERY OK source="settings" db=0.1ms idle=17.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:14.903 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:14.903 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:14.904 [debug] QUERY OK source="sources" db=0.0ms idle=1.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:47:14.905 [debug] QUERY OK source="media_items" db=0.4ms idle=2.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 02:47:14.906 [debug] QUERY OK source="media_items" db=0.9ms idle=2.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:47:14.907 [debug] QUERY OK source="sources" db=0.1ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:47:14.907 [debug] QUERY OK source="media_items" db=0.1ms idle=3.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 02:47:14.908 [debug] QUERY OK source="media_items" db=0.6ms idle=3.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 02:47:14.908 [debug] QUERY OK source="sources" db=0.1ms idle=3.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:47:14.909 [debug] QUERY OK source="media_items" db=0.2ms idle=2.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [5] 02:47:14.910 [debug] QUERY OK source="media_items" db=0.7ms idle=2.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 ? [5, 10, 0] 02:47:14.910 [info] Sent 200 in 10ms 02:47:15.401 [info] GET /sources/4/media/50045 02:47:15.401 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50045", "source_id" => "4"} Pipelines: [:browser] 02:47:15.402 [debug] QUERY OK source="media_items" db=0.2ms idle=494.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" = ?) [50045] 02:47:15.402 [debug] QUERY OK source="tasks" db=0.1ms idle=494.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50045] 02:47:15.402 [debug] QUERY OK source="sources" db=0.2ms idle=493.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" = ?) [4] 02:47:15.403 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=493.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16247] 02:47:15.403 [debug] QUERY OK source="settings" db=0.0ms idle=493.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:15.403 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:15.404 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:15.404 [debug] QUERY OK source="media_profiles" db=0.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] 02:47:15.405 [info] Sent 200 in 3ms 02:47:15.933 [info] GET /sources/6/media/42075 02:47:15.933 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42075", "source_id" => "6"} Pipelines: [:browser] 02:47:15.934 [debug] QUERY OK source="media_items" db=0.1ms 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 WHERE (m0."id" = ?) [42075] 02:47:15.934 [debug] QUERY OK source="tasks" db=0.1ms idle=530.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42075] 02:47:15.934 [debug] QUERY OK source="sources" db=0.1ms idle=530.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" = ?) [6] 02:47:15.934 [debug] QUERY OK source="settings" db=0.0ms idle=530.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:15.935 [debug] QUERY OK source="settings" db=0.0ms idle=48.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:15.935 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:15.935 [debug] QUERY OK source="media_profiles" db=0.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] 02:47:15.936 [info] Sent 200 in 3ms 02:47:16.432 [info] GET /sources/4/media/49630 02:47:16.432 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49630", "source_id" => "4"} Pipelines: [:browser] 02:47:16.432 [debug] QUERY OK source="media_items" db=0.2ms idle=498.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [49630] 02:47:16.433 [debug] QUERY OK source="tasks" db=0.1ms idle=498.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49630] 02:47:16.433 [debug] QUERY OK source="sources" db=0.2ms idle=498.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" = ?) [4] 02:47:16.433 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=498.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16185] 02:47:16.434 [debug] QUERY OK source="settings" db=0.2ms idle=498.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:16.434 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:16.434 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:16.435 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:16.435 [info] Sent 200 in 3ms 02:47:16.903 [info] GET /sources/7/media/50086 02:47:16.903 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50086", "source_id" => "7"} Pipelines: [:browser] 02:47:16.904 [debug] QUERY OK source="media_items" db=0.1ms idle=469.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" = ?) [50086] 02:47:16.904 [debug] QUERY OK source="tasks" db=0.1ms idle=469.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50086] 02:47:16.904 [debug] QUERY OK source="sources" db=0.3ms idle=469.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] 02:47:16.905 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=469.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 (?,?)) [16249, 16298] 02:47:16.905 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:16.905 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:16.906 [debug] QUERY OK source="settings" db=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 [] 02:47:16.906 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:16.907 [info] Sent 200 in 4ms 02:47:17.400 [info] GET /sources/6/media/42080 02:47:17.401 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42080", "source_id" => "6"} Pipelines: [:browser] 02:47:17.401 [debug] QUERY OK source="media_items" db=0.2ms idle=496.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [42080] 02:47:17.401 [debug] QUERY OK source="tasks" db=0.1ms idle=496.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42080] 02:47:17.401 [debug] QUERY OK source="sources" db=0.1ms idle=496.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" = ?) [6] 02:47:17.402 [debug] QUERY OK source="settings" db=0.1ms idle=496.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:17.402 [debug] QUERY OK source="settings" db=0.0ms idle=495.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:17.402 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:17.403 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:17.404 [info] Sent 200 in 3ms 02:47:17.940 [info] GET /sources/7/media/49878 02:47:17.940 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49878", "source_id" => "7"} Pipelines: [:browser] 02:47:17.941 [debug] QUERY OK source="media_items" db=0.1ms idle=538.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [49878] 02:47:17.941 [debug] QUERY OK source="tasks" db=0.1ms idle=539.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49878] 02:47:17.941 [debug] QUERY OK source="sources" db=0.2ms idle=538.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] 02:47:17.942 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=538.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16218] 02:47:17.942 [debug] QUERY OK source="settings" db=0.0ms idle=53.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:17.942 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:17.942 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:17.943 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:17.944 [info] Sent 200 in 3ms 02:47:18.447 [info] GET /sources/7/media/50511 02:47:18.447 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50511", "source_id" => "7"} Pipelines: [:browser] 02:47:18.447 [debug] QUERY OK source="media_items" db=0.2ms idle=505.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" = ?) [50511] 02:47:18.448 [debug] QUERY OK source="sources" db=0.1ms idle=505.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] 02:47:18.448 [debug] QUERY OK source="tasks" db=0.1ms idle=505.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50511] 02:47:18.448 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=505.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16331] 02:47:18.448 [debug] QUERY OK source="settings" db=0.0ms idle=505.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:18.448 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:18.449 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:18.449 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:18.450 [info] Sent 200 in 3ms 02:47:18.942 [info] GET /sources/4/media/49837 02:47:18.942 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49837", "source_id" => "4"} Pipelines: [:browser] 02:47:18.942 [debug] QUERY OK source="media_items" db=0.2ms idle=493.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" = ?) [49837] 02:47:18.943 [debug] QUERY OK source="tasks" db=0.1ms idle=494.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49837] 02:47:18.943 [debug] QUERY OK source="sources" db=0.1ms idle=494.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" = ?) [4] 02:47:18.943 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=493.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" = ?) [16216] 02:47:18.943 [debug] QUERY OK source="settings" db=0.1ms idle=54.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:18.944 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:18.944 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:18.944 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:18.945 [info] Sent 200 in 3ms 02:47:19.453 [info] GET /sources/7/media/50510 02:47:19.454 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50510", "source_id" => "7"} Pipelines: [:browser] 02:47:19.454 [debug] QUERY OK source="media_items" db=0.1ms idle=510.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" = ?) [50510] 02:47:19.455 [debug] QUERY OK source="tasks" db=0.1ms idle=511.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50510] 02:47:19.455 [debug] QUERY OK source="sources" db=0.1ms idle=510.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] 02:47:19.455 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=510.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" = ?) [16330] 02:47:19.455 [debug] QUERY OK source="settings" db=0.0ms idle=510.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:19.455 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:19.456 [debug] QUERY OK source="settings" db=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 [] 02:47:19.457 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 02:47:19.458 [info] Sent 200 in 4ms 02:47:19.909 [info] GET /sources/4/media/50259 02:47:19.909 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50259", "source_id" => "4"} Pipelines: [:browser] 02:47:19.910 [debug] QUERY OK source="media_items" db=0.1ms idle=454.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" = ?) [50259] 02:47:19.910 [debug] QUERY OK source="tasks" db=0.0ms idle=454.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50259] 02:47:19.910 [debug] QUERY OK source="sources" db=0.0ms idle=454.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" = ?) [4] 02:47:19.910 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=453.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" = ?) [16289] 02:47:19.911 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:19.911 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:19.911 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:19.911 [debug] QUERY OK source="media_profiles" db=0.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] 02:47:19.912 [info] Sent 200 in 3ms 02:47:20.446 [info] GET /sources/5/media/50203 02:47:20.446 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50203", "source_id" => "5"} Pipelines: [:browser] 02:47:20.447 [debug] QUERY OK source="media_items" db=0.2ms idle=536.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" = ?) [50203] 02:47:20.447 [debug] QUERY OK source="tasks" db=0.2ms idle=536.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50203] 02:47:20.447 [debug] QUERY OK source="sources" db=0.2ms idle=536.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:47:20.448 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=536.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16259] 02:47:20.448 [debug] QUERY OK source="settings" db=0.0ms idle=536.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:20.448 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:20.449 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:20.449 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:20.450 [info] Sent 200 in 3ms 02:47:20.907 [info] GET /sources/5/media/42549 02:47:20.907 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42549", "source_id" => "5"} Pipelines: [:browser] 02:47:20.908 [debug] QUERY OK source="media_items" db=0.2ms idle=459.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" = ?) [42549] 02:47:20.908 [debug] QUERY OK source="tasks" db=0.0ms idle=459.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42549] 02:47:20.908 [debug] QUERY OK source="sources" db=0.1ms idle=459.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:47:20.909 [debug] QUERY OK source="settings" db=0.1ms idle=459.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:20.909 [debug] QUERY OK source="settings" db=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 [] 02:47:20.909 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:20.910 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:20.911 [info] Sent 200 in 3ms 02:47:21.442 [info] GET /sources/6/media/48483 02:47:21.442 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48483", "source_id" => "6"} Pipelines: [:browser] 02:47:21.443 [debug] QUERY OK source="media_items" db=0.2ms 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 WHERE (m0."id" = ?) [48483] 02:47:21.443 [debug] QUERY OK source="tasks" db=0.1ms idle=534.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48483] 02:47:21.444 [debug] QUERY OK source="sources" db=0.2ms idle=534.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" = ?) [6] 02:47:21.444 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=534.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [15945, 15984] 02:47:21.444 [debug] QUERY OK source="settings" db=0.1ms idle=534.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:21.444 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:21.445 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:21.445 [debug] QUERY OK source="media_profiles" db=0.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] 02:47:21.446 [info] Sent 200 in 3ms 02:47:21.938 [info] GET /sources/7/media/32635 02:47:21.938 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32635", "source_id" => "7"} Pipelines: [:browser] 02:47:21.939 [debug] QUERY OK source="media_items" db=0.3ms idle=494.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" = ?) [32635] 02:47:21.939 [debug] QUERY OK source="tasks" db=0.1ms idle=494.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32635] 02:47:21.939 [debug] QUERY OK source="sources" db=0.2ms idle=494.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] 02:47:21.940 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=494.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 (?,?,?)) [15069, 15615, 16154] 02:47:21.940 [debug] QUERY OK source="settings" db=0.0ms idle=47.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:21.940 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:21.941 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:21.941 [debug] QUERY OK source="media_profiles" db=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] 02:47:21.942 [info] Sent 200 in 4ms 02:47:22.426 [info] GET /sources/7/media/32682 02:47:22.426 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32682", "source_id" => "7"} Pipelines: [:browser] 02:47:22.426 [debug] QUERY OK source="media_items" db=0.2ms idle=486.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" = ?) [32682] 02:47:22.427 [debug] QUERY OK source="sources" db=0.1ms idle=486.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] 02:47:22.427 [debug] QUERY OK source="tasks" db=0.2ms idle=486.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32682] 02:47:22.427 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=486.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 (?,?,?)) [15087, 15573, 16072] 02:47:22.428 [debug] QUERY OK source="settings" db=0.0ms idle=486.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:22.428 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:22.428 [debug] QUERY OK source="settings" db=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 [] 02:47:22.429 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:22.430 [info] Sent 200 in 3ms 02:47:22.925 [info] GET /sources/7/media/50089 02:47:22.926 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50089", "source_id" => "7"} Pipelines: [:browser] 02:47:22.926 [debug] QUERY OK source="media_items" db=0.2ms idle=498.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50089] 02:47:22.927 [debug] QUERY OK source="tasks" db=0.1ms idle=498.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50089] 02:47:22.927 [debug] QUERY OK source="sources" db=0.2ms idle=498.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] 02:47:22.927 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=498.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16252] 02:47:22.927 [debug] QUERY OK source="settings" db=0.1ms 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 [] 02:47:22.927 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:22.928 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:22.928 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:22.929 [info] Sent 200 in 3ms 02:47:23.443 [info] GET /sources/7/media/49047 02:47:23.443 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49047", "source_id" => "7"} Pipelines: [:browser] 02:47:23.444 [debug] QUERY OK source="media_items" db=0.2ms idle=516.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [49047] 02:47:23.444 [debug] QUERY OK source="tasks" db=0.2ms idle=517.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49047] 02:47:23.445 [debug] QUERY OK source="sources" db=0.3ms idle=516.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] 02:47:23.445 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=517.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16048, 16123] 02:47:23.445 [debug] QUERY OK source="settings" db=0.1ms idle=517.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:23.446 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:23.446 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:23.446 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:23.447 [info] Sent 200 in 3ms 02:47:23.920 [info] GET /sources/3/media/48347 02:47:23.921 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48347", "source_id" => "3"} Pipelines: [:browser] 02:47:23.921 [debug] QUERY OK source="media_items" db=0.2ms idle=475.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" = ?) [48347] 02:47:23.922 [debug] QUERY OK source="sources" db=0.2ms idle=475.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:47:23.922 [debug] QUERY OK source="tasks" db=0.3ms idle=475.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48347] 02:47:23.922 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=475.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" = ?) [15937] 02:47:23.923 [debug] QUERY OK source="settings" db=0.0ms idle=28.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:23.923 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:23.923 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:23.924 [debug] QUERY OK source="media_profiles" db=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] 02:47:23.925 [info] Sent 200 in 4ms 02:47:24.436 [info] GET /sources/7/media/32621 02:47:24.437 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32621", "source_id" => "7"} Pipelines: [:browser] 02:47:24.437 [debug] QUERY OK source="media_items" db=0.2ms idle=514.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" = ?) [32621] 02:47:24.437 [debug] QUERY OK source="tasks" db=0.1ms idle=514.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32621] 02:47:24.437 [debug] QUERY OK source="sources" db=0.1ms idle=514.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] 02:47:24.438 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=514.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15064, 15555, 16055] 02:47:24.438 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:24.438 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:24.439 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:24.439 [debug] QUERY OK source="media_profiles" db=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] 02:47:24.440 [info] Sent 200 in 3ms 02:47:24.938 [info] GET /sources/7/media/32627 02:47:24.938 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32627", "source_id" => "7"} Pipelines: [:browser] 02:47:24.938 [debug] QUERY OK source="media_items" db=0.2ms idle=499.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32627] 02:47:24.939 [debug] QUERY OK source="tasks" db=0.0ms idle=500.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32627] 02:47:24.939 [debug] QUERY OK source="sources" db=0.0ms idle=500.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] 02:47:24.939 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=499.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 (?,?,?)) [15065, 15556, 16056] 02:47:24.940 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:24.940 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:24.940 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:24.940 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:24.941 [info] Sent 200 in 3ms 02:47:25.409 [info] GET /sources/7/media/32634 02:47:25.409 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32634", "source_id" => "7"} Pipelines: [:browser] 02:47:25.410 [debug] QUERY OK source="media_items" db=0.2ms 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."id" = ?) [32634] 02:47:25.410 [debug] QUERY OK source="sources" db=0.1ms idle=470.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] 02:47:25.410 [debug] QUERY OK source="tasks" db=0.1ms idle=470.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32634] 02:47:25.410 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=470.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15068, 15614, 16153] 02:47:25.411 [debug] QUERY OK source="settings" db=0.0ms idle=470.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:25.411 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:25.411 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:25.412 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:25.412 [info] Sent 200 in 3ms 02:47:25.906 [info] GET /sources/5/media/49366 02:47:25.906 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49366", "source_id" => "5"} Pipelines: [:browser] 02:47:25.907 [debug] QUERY OK source="media_items" db=0.1ms idle=495.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" = ?) [49366] 02:47:25.907 [debug] QUERY OK source="tasks" db=0.1ms idle=495.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49366] 02:47:25.907 [debug] QUERY OK source="sources" db=0.1ms idle=495.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:47:25.907 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=495.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16125, 16192] 02:47:25.908 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:25.908 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:25.908 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:25.909 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:25.910 [info] Sent 200 in 3ms 02:47:26.424 [info] GET /sources/3/media/48970 02:47:26.424 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48970", "source_id" => "3"} Pipelines: [:browser] 02:47:26.425 [debug] QUERY OK source="media_items" db=0.1ms idle=517.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" = ?) [48970] 02:47:26.425 [debug] QUERY OK source="sources" db=0.0ms idle=517.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:47:26.425 [debug] QUERY OK source="tasks" db=0.2ms idle=517.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48970] 02:47:26.425 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=517.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16043, 16122] 02:47:26.426 [debug] QUERY OK source="settings" db=0.1ms idle=517.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:26.426 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:26.426 [debug] QUERY OK source="settings" db=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 [] 02:47:26.427 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:26.428 [info] Sent 200 in 3ms 02:47:26.919 [info] GET /sources/4/media/49006 02:47:26.919 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49006", "source_id" => "4"} Pipelines: [:browser] 02:47:26.919 [debug] QUERY OK source="media_items" db=0.1ms idle=493.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" = ?) [49006] 02:47:26.920 [debug] QUERY OK source="tasks" db=0.1ms idle=493.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49006] 02:47:26.920 [debug] QUERY OK source="sources" db=0.1ms idle=493.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" = ?) [4] 02:47:26.920 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=492.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" = ?) [16046] 02:47:26.920 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:26.920 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:26.921 [debug] QUERY OK source="settings" db=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 [] 02:47:26.921 [debug] QUERY OK source="media_profiles" db=0.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] 02:47:26.922 [info] Sent 200 in 3ms 02:47:27.447 [info] GET /sources/6/media/42082 02:47:27.447 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42082", "source_id" => "6"} Pipelines: [:browser] 02:47:27.447 [debug] QUERY OK source="media_items" db=0.2ms idle=527.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" = ?) [42082] 02:47:27.448 [debug] QUERY OK source="tasks" db=0.1ms idle=527.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42082] 02:47:27.448 [debug] QUERY OK source="sources" db=0.2ms idle=527.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" = ?) [6] 02:47:27.448 [debug] QUERY OK source="settings" db=0.0ms idle=527.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:27.448 [debug] QUERY OK source="settings" db=0.1ms idle=527.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:27.449 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:27.449 [debug] QUERY OK source="media_profiles" db=0.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] 02:47:27.450 [info] Sent 200 in 3ms 02:47:27.900 [info] GET /sources/4/media/48592 02:47:27.900 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48592", "source_id" => "4"} Pipelines: [:browser] 02:47:27.901 [debug] QUERY OK source="media_items" db=0.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."id" = ?) [48592] 02:47:27.901 [debug] QUERY OK source="tasks" db=0.0ms idle=452.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48592] 02:47:27.901 [debug] QUERY OK source="sources" db=0.2ms idle=452.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" = ?) [4] 02:47:27.902 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=452.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15975] 02:47:27.902 [debug] QUERY OK source="settings" db=0.0ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:27.902 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:27.902 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:27.903 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:27.904 [info] Sent 200 in 3ms 02:47:28.442 [info] GET /sources/6/media/43121 02:47:28.442 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "43121", "source_id" => "6"} Pipelines: [:browser] 02:47:28.443 [debug] QUERY OK source="media_items" db=0.3ms idle=541.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" = ?) [43121] 02:47:28.443 [debug] QUERY OK source="sources" db=0.1ms idle=541.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" = ?) [6] 02:47:28.444 [debug] QUERY OK source="tasks" db=0.2ms idle=541.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [43121] 02:47:28.444 [debug] QUERY OK source="settings" db=0.1ms idle=541.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:28.444 [debug] QUERY OK source="settings" db=0.1ms idle=540.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:28.445 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:28.445 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:28.446 [info] Sent 200 in 3ms 02:47:28.913 [info] GET /sources/4/media/48798 02:47:28.913 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48798", "source_id" => "4"} Pipelines: [:browser] 02:47:28.914 [debug] QUERY OK source="media_items" db=0.2ms idle=469.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" = ?) [48798] 02:47:28.914 [debug] QUERY OK source="tasks" db=0.0ms idle=469.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48798] 02:47:28.914 [debug] QUERY OK source="sources" db=0.1ms idle=469.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" = ?) [4] 02:47:28.914 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=469.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16009] 02:47:28.915 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:28.915 [debug] QUERY OK source="settings" db=0.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:28.915 [debug] QUERY OK source="settings" db=0.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:28.915 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:28.916 [info] Sent 200 in 3ms 02:47:29.447 [info] GET /sources/7/media/50088 02:47:29.447 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50088", "source_id" => "7"} Pipelines: [:browser] 02:47:29.448 [debug] QUERY OK source="media_items" db=0.1ms idle=533.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" = ?) [50088] 02:47:29.448 [debug] QUERY OK source="tasks" db=0.1ms idle=533.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50088] 02:47:29.448 [debug] QUERY OK source="sources" db=0.1ms idle=533.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] 02:47:29.448 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=533.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16251] 02:47:29.449 [debug] QUERY OK source="settings" db=0.1ms idle=533.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:29.449 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:29.449 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:29.450 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:29.451 [info] Sent 200 in 3ms 02:47:29.928 [info] GET /sources/6/media/42078 02:47:29.929 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42078", "source_id" => "6"} Pipelines: [:browser] 02:47:29.929 [debug] QUERY OK source="media_items" db=0.2ms idle=480.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" = ?) [42078] 02:47:29.929 [debug] QUERY OK source="tasks" db=0.1ms idle=480.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42078] 02:47:29.930 [debug] QUERY OK source="sources" db=0.1ms idle=480.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 02:47:29.930 [debug] QUERY OK source="settings" db=0.0ms idle=480.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:29.930 [debug] QUERY OK source="settings" db=0.0ms idle=28.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:29.931 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:29.931 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:29.932 [info] Sent 200 in 3ms 02:47:30.413 [info] GET /sources/7/media/50087 02:47:30.413 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50087", "source_id" => "7"} Pipelines: [:browser] 02:47:30.413 [debug] QUERY OK source="media_items" db=0.1ms idle=483.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50087] 02:47:30.413 [debug] QUERY OK source="tasks" db=0.0ms idle=483.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50087] 02:47:30.414 [debug] QUERY OK source="sources" db=0.1ms idle=483.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:47:30.414 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=483.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16250] 02:47:30.414 [debug] QUERY OK source="settings" db=0.0ms idle=482.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:30.414 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:30.415 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:30.415 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 02:47:30.416 [info] Sent 200 in 3ms 02:47:30.901 [info] GET /sources/3/media/49182 02:47:30.901 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49182", "source_id" => "3"} Pipelines: [:browser] 02:47:30.901 [debug] QUERY OK source="media_items" db=0.2ms idle=487.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" = ?) [49182] 02:47:30.902 [debug] QUERY OK source="tasks" db=0.1ms idle=487.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49182] 02:47:30.902 [debug] QUERY OK source="sources" db=0.2ms idle=487.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:47:30.902 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=487.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16108] 02:47:30.903 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:30.903 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:30.903 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:30.904 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:30.904 [info] Sent 200 in 3ms 02:47:31.470 [info] GET /sources/7/media/49257 02:47:31.470 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49257", "source_id" => "7"} Pipelines: [:browser] 02:47:31.470 [debug] QUERY OK source="media_items" db=0.2ms idle=567.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" = ?) [49257] 02:47:31.471 [debug] QUERY OK source="tasks" db=0.1ms idle=567.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49257] 02:47:31.471 [debug] QUERY OK source="sources" db=0.2ms idle=567.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] 02:47:31.471 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=567.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 (?,?)) [16112, 16160] 02:47:31.472 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:31.472 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:31.472 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:31.472 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:31.473 [info] Sent 200 in 3ms 02:47:31.925 [info] GET /sources/5/media/48324 02:47:31.925 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48324", "source_id" => "5"} Pipelines: [:browser] 02:47:31.925 [debug] QUERY OK source="media_items" db=0.2ms 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."id" = ?) [48324] 02:47:31.926 [debug] QUERY OK source="tasks" db=0.1ms idle=453.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48324] 02:47:31.926 [debug] QUERY OK source="sources" db=0.2ms idle=453.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:47:31.926 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=453.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" = ?) [15915] 02:47:31.926 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:31.926 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:31.927 [debug] QUERY OK source="settings" db=0.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:31.927 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 02:47:31.928 [info] Sent 200 in 3ms 02:47:32.417 [info] GET /sources/3/media/47935 02:47:32.417 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47935", "source_id" => "3"} Pipelines: [:browser] 02:47:32.418 [debug] QUERY OK source="media_items" db=0.2ms idle=491.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" = ?) [47935] 02:47:32.418 [debug] QUERY OK source="sources" db=0.1ms idle=491.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:47:32.418 [debug] QUERY OK source="tasks" db=0.2ms idle=491.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47935] 02:47:32.418 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=491.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 (?,?)) [15872, 15914] 02:47:32.419 [debug] QUERY OK source="settings" db=0.0ms idle=491.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:32.419 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:32.419 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:32.419 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:32.420 [info] Sent 200 in 3ms 02:47:32.923 [info] GET /sources/6/media/47500 02:47:32.923 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47500", "source_id" => "6"} Pipelines: [:browser] 02:47:32.924 [debug] QUERY OK source="media_items" db=0.2ms idle=504.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" = ?) [47500] 02:47:32.924 [debug] QUERY OK source="tasks" db=0.2ms idle=505.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47500] 02:47:32.925 [debug] QUERY OK source="sources" db=0.4ms idle=505.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" = ?) [6] 02:47:32.925 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=505.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15765] 02:47:32.925 [debug] QUERY OK source="settings" db=0.1ms idle=21.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:32.926 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:32.926 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:32.926 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:47:32.927 [info] Sent 200 in 4ms 02:47:33.401 [info] GET /sources/4/media/49424/edit 02:47:33.401 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49424", "source_id" => "4"} Pipelines: [:browser] 02:47:33.401 [debug] QUERY OK source="media_items" db=0.2ms idle=476.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [49424] 02:47:33.402 [debug] QUERY OK source="settings" db=0.0ms idle=476.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:33.402 [debug] QUERY OK source="settings" db=0.1ms idle=476.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:33.402 [debug] QUERY OK source="settings" db=0.1ms idle=476.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:33.403 [info] Sent 200 in 2ms 02:47:33.940 [info] GET /sources/4/media/50045/edit 02:47:33.941 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50045", "source_id" => "4"} Pipelines: [:browser] 02:47:33.941 [debug] QUERY OK source="media_items" db=0.3ms idle=539.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" = ?) [50045] 02:47:33.942 [debug] QUERY OK source="settings" db=0.0ms idle=539.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:33.942 [debug] QUERY OK source="settings" db=0.1ms idle=539.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:33.942 [debug] QUERY OK source="settings" db=0.0ms idle=539.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:33.943 [info] Sent 200 in 2ms 02:47:34.445 [info] GET /sources/6/media/47466/edit 02:47:34.446 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "47466", "source_id" => "6"} Pipelines: [:browser] 02:47:34.446 [debug] QUERY OK source="media_items" db=0.2ms idle=540.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" = ?) [47466] 02:47:34.446 [debug] QUERY OK source="settings" db=0.0ms idle=504.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:34.447 [debug] QUERY OK source="settings" db=0.0ms idle=504.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:34.447 [debug] QUERY OK source="settings" db=0.0ms idle=504.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:34.447 [info] Sent 200 in 1ms 02:47:34.912 [info] GET /sources/6/media/50411/edit 02:47:34.912 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50411", "source_id" => "6"} Pipelines: [:browser] 02:47:34.912 [debug] QUERY OK source="media_items" db=0.1ms idle=466.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" = ?) [50411] 02:47:34.913 [debug] QUERY OK source="settings" db=0.1ms idle=466.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:34.913 [debug] QUERY OK source="settings" db=0.0ms idle=466.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:34.913 [debug] QUERY OK source="settings" db=0.0ms idle=466.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:34.914 [info] Sent 200 in 2ms 02:47:35.402 [info] GET /sources/7/media/49257/edit 02:47:35.402 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49257", "source_id" => "7"} Pipelines: [:browser] 02:47:35.402 [debug] QUERY OK source="media_items" db=0.2ms idle=496.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [49257] 02:47:35.403 [debug] QUERY OK source="settings" db=0.0ms idle=490.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:35.403 [debug] QUERY OK source="settings" db=0.0ms idle=489.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:35.403 [debug] QUERY OK source="settings" db=0.1ms idle=490.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:35.404 [info] Sent 200 in 2ms 02:47:35.917 [info] GET /sources/4/media/50467/edit 02:47:35.917 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50467", "source_id" => "4"} Pipelines: [:browser] 02:47:35.918 [debug] QUERY OK source="media_items" db=0.1ms idle=515.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" = ?) [50467] 02:47:35.918 [debug] QUERY OK source="settings" db=0.1ms idle=515.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:35.918 [debug] QUERY OK source="settings" db=0.0ms idle=515.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:35.919 [debug] QUERY OK source="settings" db=0.0ms idle=515.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:35.919 [info] Sent 200 in 2ms 02:47:36.441 [info] GET /sources/3/media/42079/edit 02:47:36.441 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "42079", "source_id" => "3"} Pipelines: [:browser] 02:47:36.441 [debug] QUERY OK source="media_items" db=0.2ms idle=534.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" = ?) [42079] 02:47:36.442 [debug] QUERY OK source="settings" db=0.0ms idle=523.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:36.442 [debug] QUERY OK source="settings" db=0.0ms idle=523.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:36.442 [debug] QUERY OK source="settings" db=0.1ms idle=523.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:36.443 [info] Sent 200 in 2ms 02:47:36.904 [info] GET /sources/6/media/42078/edit 02:47:36.904 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "42078", "source_id" => "6"} Pipelines: [:browser] 02:47:36.905 [debug] QUERY OK source="media_items" db=0.2ms idle=985.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" = ?) [42078] 02:47:36.905 [debug] QUERY OK source="settings" db=0.0ms idle=463.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:36.905 [debug] QUERY OK source="settings" db=0.1ms idle=463.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:36.906 [debug] QUERY OK source="settings" db=0.1ms idle=463.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:36.906 [info] Sent 200 in 2ms 02:47:37.446 [info] GET /sources/6/media/48483/edit 02:47:37.446 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48483", "source_id" => "6"} Pipelines: [:browser] 02:47:37.447 [debug] QUERY OK source="media_items" db=0.3ms idle=541.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" = ?) [48483] 02:47:37.447 [debug] QUERY OK source="settings" db=0.1ms idle=542.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:37.447 [debug] QUERY OK source="settings" db=0.1ms idle=542.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:37.448 [debug] QUERY OK source="settings" db=0.0ms idle=542.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:37.448 [info] Sent 200 in 2ms 02:47:37.928 [info] GET /sources/7/media/50088/edit 02:47:37.928 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50088", "source_id" => "7"} Pipelines: [:browser] 02:47:37.929 [debug] QUERY OK source="media_items" db=0.2ms idle=481.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" = ?) [50088] 02:47:37.929 [debug] QUERY OK source="settings" db=0.0ms idle=481.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:37.929 [debug] QUERY OK source="settings" db=0.1ms idle=481.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:37.930 [debug] QUERY OK source="settings" db=0.0ms idle=481.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:37.930 [info] Sent 200 in 2ms 02:47:38.426 [info] GET /sources/5/media/48324/edit 02:47:38.426 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48324", "source_id" => "5"} Pipelines: [:browser] 02:47:38.427 [debug] QUERY OK source="media_items" db=0.2ms idle=517.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" = ?) [48324] 02:47:38.427 [debug] QUERY OK source="settings" db=0.0ms idle=498.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:38.427 [debug] QUERY OK source="settings" db=0.1ms idle=498.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:38.428 [debug] QUERY OK source="settings" db=0.0ms idle=498.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:38.428 [info] Sent 200 in 2ms 02:47:38.942 [info] GET /sources/7/media/32635/edit 02:47:38.943 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32635", "source_id" => "7"} Pipelines: [:browser] 02:47:38.943 [debug] QUERY OK source="media_items" db=0.2ms idle=516.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" = ?) [32635] 02:47:38.944 [debug] QUERY OK source="settings" db=0.1ms idle=516.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:38.944 [debug] QUERY OK source="settings" db=0.1ms idle=516.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:38.944 [debug] QUERY OK source="settings" db=0.0ms idle=516.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:38.945 [info] Sent 200 in 2ms 02:47:39.074 [info] {"source":"oban","duration":1318,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:47:39.419 [info] GET /sources/7/media/50089/edit 02:47:39.419 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50089", "source_id" => "7"} Pipelines: [:browser] 02:47:39.420 [debug] QUERY OK source="media_items" db=0.2ms idle=476.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50089] 02:47:39.420 [debug] QUERY OK source="settings" db=0.0ms idle=476.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:39.420 [debug] QUERY OK source="settings" db=0.0ms idle=476.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:39.420 [debug] QUERY OK source="settings" db=0.0ms idle=475.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:39.421 [info] Sent 200 in 2ms 02:47:39.933 [info] GET /sources/4/media/50259/edit 02:47:39.933 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50259", "source_id" => "4"} Pipelines: [:browser] 02:47:39.934 [debug] QUERY OK source="media_items" db=0.1ms idle=514.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" = ?) [50259] 02:47:39.934 [debug] QUERY OK source="settings" db=0.0ms idle=514.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:39.934 [debug] QUERY OK source="settings" db=0.0ms idle=514.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:39.935 [debug] QUERY OK source="settings" db=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 [] 02:47:39.936 [info] Sent 200 in 2ms 02:47:40.439 [info] GET /sources/6/media/42075/edit 02:47:40.439 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "42075", "source_id" => "6"} Pipelines: [:browser] 02:47:40.440 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=528.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" = ?) [42075] 02:47:40.440 [debug] QUERY OK source="settings" db=0.0ms idle=505.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:40.440 [debug] QUERY OK source="settings" db=0.0ms idle=505.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:40.441 [debug] QUERY OK source="settings" db=0.0ms idle=506.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:40.441 [info] Sent 200 in 2ms 02:47:40.929 [info] GET /sources/4/media/49006/edit 02:47:40.930 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49006", "source_id" => "4"} Pipelines: [:browser] 02:47:40.930 [debug] QUERY OK source="media_items" db=0.2ms idle=490.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" = ?) [49006] 02:47:40.930 [debug] QUERY OK source="settings" db=0.1ms idle=490.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:40.931 [debug] QUERY OK source="settings" db=0.0ms idle=490.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:40.931 [debug] QUERY OK source="settings" db=0.1ms idle=490.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:40.931 [info] Sent 200 in 2ms 02:47:41.446 [info] GET /sources/6/media/43121/edit 02:47:41.446 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "43121", "source_id" => "6"} Pipelines: [:browser] 02:47:41.447 [debug] QUERY OK source="media_items" db=0.2ms idle=534.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" = ?) [43121] 02:47:41.447 [debug] QUERY OK source="settings" db=0.0ms idle=517.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:41.447 [debug] QUERY OK source="settings" db=0.0ms idle=516.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:41.448 [debug] QUERY OK source="settings" db=0.0ms idle=517.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:41.448 [info] Sent 200 in 2ms 02:47:41.942 [info] GET /sources/3/media/47935/edit 02:47:41.943 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "47935", "source_id" => "3"} Pipelines: [:browser] 02:47:41.943 [debug] QUERY OK source="media_items" db=0.1ms idle=495.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" = ?) [47935] 02:47:41.943 [debug] QUERY OK source="settings" db=0.1ms idle=495.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:41.944 [debug] QUERY OK source="settings" db=0.0ms idle=496.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:41.944 [debug] QUERY OK source="settings" db=0.1ms idle=496.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:41.945 [info] Sent 200 in 2ms 02:47:42.466 [info] GET /sources/3/media/47311/edit 02:47:42.466 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "47311", "source_id" => "3"} Pipelines: [:browser] 02:47:42.466 [debug] QUERY OK source="media_items" db=0.2ms idle=553.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" = ?) [47311] 02:47:42.467 [debug] QUERY OK source="settings" db=0.1ms idle=523.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:42.467 [debug] QUERY OK source="settings" db=0.0ms idle=523.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:42.467 [debug] QUERY OK source="settings" db=0.0ms idle=523.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:42.468 [info] Sent 200 in 2ms 02:47:42.910 [info] GET /sources/7/media/32621/edit 02:47:42.910 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32621", "source_id" => "7"} Pipelines: [:browser] 02:47:42.911 [debug] QUERY OK source="media_items" db=0.2ms idle=966.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" = ?) [32621] 02:47:42.911 [debug] QUERY OK source="settings" db=0.1ms idle=444.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:42.911 [debug] QUERY OK source="settings" db=0.0ms idle=444.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:42.912 [debug] QUERY OK source="settings" db=0.0ms idle=444.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:42.912 [info] Sent 200 in 2ms 02:47:43.443 [info] GET /sources/5/media/50203/edit 02:47:43.443 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50203", "source_id" => "5"} Pipelines: [:browser] 02:47:43.443 [debug] QUERY OK source="media_items" db=0.2ms idle=532.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" = ?) [50203] 02:47:43.444 [debug] QUERY OK source="settings" db=0.0ms idle=532.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:43.444 [debug] QUERY OK source="settings" db=0.0ms idle=532.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:43.444 [debug] QUERY OK source="settings" db=0.0ms idle=532.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:43.445 [info] Sent 200 in 2ms 02:47:43.927 [info] GET /sources/3/media/49182/edit 02:47:43.927 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49182", "source_id" => "3"} Pipelines: [:browser] 02:47:43.927 [debug] QUERY OK source="media_items" db=0.2ms idle=483.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" = ?) [49182] 02:47:43.928 [debug] QUERY OK source="settings" db=0.0ms idle=484.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:43.928 [debug] QUERY OK source="settings" db=0.0ms idle=484.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:43.928 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:43.929 [info] Sent 200 in 2ms 02:47:44.442 [info] GET /sources/7/media/50086/edit 02:47:44.443 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50086", "source_id" => "7"} Pipelines: [:browser] 02:47:44.443 [debug] QUERY OK source="media_items" db=0.2ms idle=527.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" = ?) [50086] 02:47:44.444 [debug] QUERY OK source="settings" db=0.1ms idle=515.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:44.444 [debug] QUERY OK source="settings" db=0.0ms idle=515.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:44.444 [debug] QUERY OK source="settings" db=0.0ms idle=516.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:44.445 [info] Sent 200 in 2ms 02:47:44.942 [info] GET /sources/7/media/50510/edit 02:47:44.942 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50510", "source_id" => "7"} Pipelines: [:browser] 02:47:44.943 [debug] QUERY OK source="media_items" db=0.2ms idle=499.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50510] 02:47:44.943 [debug] QUERY OK source="settings" db=0.0ms idle=499.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:44.943 [debug] QUERY OK source="settings" db=0.0ms idle=499.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:44.944 [debug] QUERY OK source="settings" db=0.0ms idle=499.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:44.944 [info] Sent 200 in 2ms 02:47:45.401 [info] GET /sources/7/media/32627/edit 02:47:45.401 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32627", "source_id" => "7"} Pipelines: [:browser] 02:47:45.402 [debug] QUERY OK source="media_items" db=0.3ms idle=485.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" = ?) [32627] 02:47:45.402 [debug] QUERY OK source="settings" db=0.0ms idle=458.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:45.402 [debug] QUERY OK source="settings" db=0.1ms idle=458.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:45.402 [debug] QUERY OK source="settings" db=0.0ms idle=458.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:45.403 [info] Sent 200 in 2ms 02:47:45.913 [info] GET /sources/4/media/50466/edit 02:47:45.913 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50466", "source_id" => "4"} Pipelines: [:browser] 02:47:45.914 [debug] QUERY OK source="media_items" db=0.2ms idle=969.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" = ?) [50466] 02:47:45.914 [debug] QUERY OK source="settings" db=0.0ms idle=512.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:45.914 [debug] QUERY OK source="settings" db=0.0ms idle=512.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:45.915 [debug] QUERY OK source="settings" db=0.0ms idle=512.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:45.915 [info] Sent 200 in 2ms 02:47:46.409 [info] GET /sources/4/media/49630/edit 02:47:46.409 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49630", "source_id" => "4"} Pipelines: [:browser] 02:47:46.410 [debug] QUERY OK source="media_items" db=0.2ms idle=495.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" = ?) [49630] 02:47:46.410 [debug] QUERY OK source="settings" db=0.0ms idle=496.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:46.410 [debug] QUERY OK source="settings" db=0.0ms idle=496.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:46.411 [debug] QUERY OK source="settings" db=0.0ms idle=496.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:46.411 [info] Sent 200 in 2ms 02:47:46.914 [info] GET /sources/3/media/48347/edit 02:47:46.914 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48347", "source_id" => "3"} Pipelines: [:browser] 02:47:46.914 [debug] QUERY OK source="media_items" db=0.1ms idle=997.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" = ?) [48347] 02:47:46.915 [debug] QUERY OK source="settings" db=0.0ms idle=504.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:46.915 [debug] QUERY OK source="settings" db=0.0ms idle=504.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:46.915 [debug] QUERY OK source="settings" db=0.0ms idle=504.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:46.916 [info] Sent 200 in 2ms 02:47:47.401 [info] GET /sources/4/media/48592/edit 02:47:47.401 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48592", "source_id" => "4"} Pipelines: [:browser] 02:47:47.401 [debug] QUERY OK source="media_items" db=0.2ms idle=486.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" = ?) [48592] 02:47:47.402 [debug] QUERY OK source="settings" db=0.0ms idle=486.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:47.402 [debug] QUERY OK source="settings" db=0.0ms idle=486.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:47.402 [debug] QUERY OK source="settings" db=0.0ms idle=486.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:47.403 [info] Sent 200 in 2ms 02:47:47.922 [info] GET /sources/7/media/32634/edit 02:47:47.922 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32634", "source_id" => "7"} Pipelines: [:browser] 02:47:47.923 [debug] QUERY OK source="media_items" db=0.1ms idle=521.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" = ?) [32634] 02:47:47.923 [debug] QUERY OK source="settings" db=0.1ms idle=521.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:47.923 [debug] QUERY OK source="settings" db=0.1ms idle=521.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:47.924 [debug] QUERY OK source="settings" db=0.0ms idle=521.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:47.924 [info] Sent 200 in 2ms 02:47:48.442 [info] GET /sources/7/media/50087/edit 02:47:48.443 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50087", "source_id" => "7"} Pipelines: [:browser] 02:47:48.443 [debug] QUERY OK source="media_items" db=0.2ms 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."id" = ?) [50087] 02:47:48.443 [debug] QUERY OK source="settings" db=0.0ms idle=520.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:48.444 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:48.444 [debug] QUERY OK source="settings" db=0.0ms idle=520.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:48.445 [info] Sent 200 in 2ms 02:47:48.905 [info] GET /sources/7/media/32628/edit 02:47:48.905 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32628", "source_id" => "7"} Pipelines: [:browser] 02:47:48.906 [debug] QUERY OK source="media_items" db=0.2ms idle=981.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" = ?) [32628] 02:47:48.906 [debug] QUERY OK source="settings" db=0.1ms idle=462.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:48.906 [debug] QUERY OK source="settings" db=0.1ms idle=462.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:48.907 [debug] QUERY OK source="settings" db=0.0ms idle=462.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:48.907 [info] Sent 200 in 2ms 02:47:49.457 [info] GET /sources/7/media/32633/edit 02:47:49.458 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32633", "source_id" => "7"} Pipelines: [:browser] 02:47:49.458 [debug] QUERY OK source="media_items" db=0.1ms idle=552.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" = ?) [32633] 02:47:49.458 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:47:49.459 [debug] QUERY OK source="settings" db=0.0ms idle=552.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:49.459 [debug] QUERY OK source="settings" db=0.0ms idle=552.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:49.459 [info] Sent 200 in 1ms 02:47:49.940 [info] GET /sources/7/media/50300/edit 02:47:49.940 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50300", "source_id" => "7"} Pipelines: [:browser] 02:47:49.941 [debug] QUERY OK source="media_items" db=0.2ms idle=482.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" = ?) [50300] 02:47:49.941 [debug] QUERY OK source="settings" db=0.1ms idle=482.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:49.942 [debug] QUERY OK source="settings" db=0.0ms idle=482.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:49.942 [debug] QUERY OK source="settings" db=0.1ms idle=482.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:49.942 [info] Sent 200 in 2ms 02:47:50.457 [info] GET /sources/7/media/49878/edit 02:47:50.458 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49878", "source_id" => "7"} Pipelines: [:browser] 02:47:50.458 [debug] QUERY OK source="media_items" db=0.2ms idle=536.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" = ?) [49878] 02:47:50.458 [debug] QUERY OK source="settings" db=0.0ms idle=517.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:50.459 [debug] QUERY OK source="settings" db=0.0ms idle=517.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:50.459 [debug] QUERY OK source="settings" db=0.0ms idle=517.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:50.460 [info] Sent 200 in 2ms 02:47:50.943 [info] GET /sources/7/media/32687/edit 02:47:50.943 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32687", "source_id" => "7"} Pipelines: [:browser] 02:47:50.943 [debug] QUERY OK source="media_items" db=0.2ms idle=484.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" = ?) [32687] 02:47:50.944 [debug] QUERY OK source="settings" db=0.0ms idle=485.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:50.944 [debug] QUERY OK source="settings" db=0.0ms idle=485.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:50.944 [debug] QUERY OK source="settings" db=0.0ms idle=485.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:50.945 [info] Sent 200 in 2ms 02:47:51.426 [info] GET /sources/5/media/42549/edit 02:47:51.426 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "42549", "source_id" => "5"} Pipelines: [:browser] 02:47:51.427 [debug] QUERY OK source="media_items" db=0.3ms idle=504.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" = ?) [42549] 02:47:51.427 [debug] QUERY OK source="settings" db=0.0ms idle=483.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:51.427 [debug] QUERY OK source="settings" db=0.1ms idle=483.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:51.428 [debug] QUERY OK source="settings" db=0.1ms idle=483.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:51.428 [info] Sent 200 in 2ms 02:47:51.937 [info] GET /sources/5/media/49366/edit 02:47:51.938 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49366", "source_id" => "5"} Pipelines: [:browser] 02:47:51.938 [debug] QUERY OK source="media_items" db=0.2ms idle=510.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" = ?) [49366] 02:47:51.938 [debug] QUERY OK source="settings" db=0.0ms idle=511.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:51.939 [debug] QUERY OK source="settings" db=0.0ms idle=511.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:51.939 [debug] QUERY OK source="settings" db=0.0ms idle=510.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:51.939 [info] Sent 200 in 1ms 02:47:52.406 [info] GET /sources/4/media/48798/edit 02:47:52.407 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48798", "source_id" => "4"} Pipelines: [:browser] 02:47:52.407 [debug] QUERY OK source="media_items" db=0.2ms idle=483.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" = ?) [48798] 02:47:52.407 [debug] QUERY OK source="settings" db=0.1ms idle=469.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:52.408 [debug] QUERY OK source="settings" db=0.1ms idle=469.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:52.408 [debug] QUERY OK source="settings" db=0.0ms idle=469.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:52.409 [info] Sent 200 in 2ms 02:47:52.924 [info] GET /sources/7/media/49047/edit 02:47:52.924 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49047", "source_id" => "7"} Pipelines: [:browser] 02:47:52.925 [debug] QUERY OK source="media_items" db=0.2ms idle=517.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" = ?) [49047] 02:47:52.925 [debug] QUERY OK source="settings" db=0.0ms idle=517.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:52.925 [debug] QUERY OK source="settings" db=0.0ms idle=517.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:52.926 [debug] QUERY OK source="settings" db=0.0ms idle=517.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:52.926 [info] Sent 200 in 2ms 02:47:53.442 [info] GET /sources/6/media/42080/edit 02:47:53.443 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "42080", "source_id" => "6"} Pipelines: [:browser] 02:47:53.443 [debug] QUERY OK source="media_items" db=0.2ms idle=518.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" = ?) [42080] 02:47:53.443 [debug] QUERY OK source="settings" db=0.0ms idle=518.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:53.444 [debug] QUERY OK source="settings" db=0.0ms idle=518.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:53.444 [debug] QUERY OK source="settings" db=0.0ms idle=518.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:53.445 [info] Sent 200 in 2ms 02:47:53.942 [info] GET /sources/3/media/48970/edit 02:47:53.942 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48970", "source_id" => "3"} Pipelines: [:browser] 02:47:53.943 [debug] QUERY OK source="media_items" db=0.1ms idle=499.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" = ?) [48970] 02:47:53.943 [debug] QUERY OK source="settings" db=0.0ms idle=499.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:53.943 [debug] QUERY OK source="settings" db=0.1ms idle=499.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:53.944 [debug] QUERY OK source="settings" db=0.0ms idle=499.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:53.944 [info] Sent 200 in 2ms 02:47:54.422 [info] GET /sources/4/media/49837/edit 02:47:54.422 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49837", "source_id" => "4"} Pipelines: [:browser] 02:47:54.422 [debug] QUERY OK source="media_items" db=0.2ms idle=495.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" = ?) [49837] 02:47:54.423 [debug] QUERY OK source="settings" db=0.0ms idle=479.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:54.423 [debug] QUERY OK source="settings" db=0.0ms idle=479.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:54.423 [debug] QUERY OK source="settings" db=0.1ms idle=479.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:54.424 [info] Sent 200 in 2ms 02:47:54.978 [info] GET /sources/7/media/50511/edit 02:47:54.978 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50511", "source_id" => "7"} Pipelines: [:browser] 02:47:54.978 [debug] QUERY OK source="media_items" db=0.2ms idle=555.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50511] 02:47:54.979 [debug] QUERY OK source="settings" db=0.0ms idle=555.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:54.979 [debug] QUERY OK source="settings" db=0.0ms idle=555.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:54.979 [debug] QUERY OK source="settings" db=0.0ms idle=555.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:54.980 [info] Sent 200 in 2ms 02:47:55.446 [info] GET /sources/6/media/47500/edit 02:47:55.446 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "47500", "source_id" => "6"} Pipelines: [:browser] 02:47:55.447 [debug] QUERY OK source="media_items" db=0.2ms idle=519.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [47500] 02:47:55.447 [debug] QUERY OK source="settings" db=0.0ms idle=468.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:55.448 [debug] QUERY OK source="settings" db=0.1ms idle=468.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:55.448 [debug] QUERY OK source="settings" db=0.0ms idle=469.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:55.449 [info] Sent 200 in 2ms 02:47:55.923 [info] GET /sources/5/media/50203/force_download 02:47:55.924 [debug] QUERY OK source="settings" db=0.1ms idle=944.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:55.924 [debug] QUERY OK source="settings" db=0.0ms idle=477.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:55.924 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:47:55.924 [error] #PID<0.91158.0> running PinchflatWeb.Endpoint (connection #PID<0.91157.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/5/media/50203/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/5/media/50203/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91157.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/50203/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 57238}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/50203", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91158.0>, params: %{}, path_info: ["sources", "5", "media", "50203", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/5/media/50203"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/5/media/50203/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_yIVUx9hQ8dEACY7h"} ], 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.91157.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/50203/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 57238}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/50203", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/5/media/50203/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91157.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/50203/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 57238}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/50203", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:47:56.415 [info] GET /sources/7/media/50510/force_download 02:47:56.416 [debug] QUERY OK source="settings" db=0.1ms idle=967.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:56.416 [debug] QUERY OK source="settings" db=0.0ms idle=967.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:56.416 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:47:56.416 [error] #PID<0.91160.0> running PinchflatWeb.Endpoint (connection #PID<0.91159.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50510/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50510/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91159.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 57252}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50510", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91160.0>, params: %{}, path_info: ["sources", "7", "media", "50510", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/50510"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/50510/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_yKKkTD7fqkoABZfC"} ], 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.91159.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 57252}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50510", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/50510/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91159.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 57252}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50510", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:47:57.159 [info] GET /sources/4/media/50259/force_download 02:47:57.160 [debug] QUERY OK source="settings" db=0.1ms idle=1235.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:57.160 [debug] QUERY OK source="settings" db=0.0ms idle=1232.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:57.160 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:47:57.160 [error] #PID<0.91162.0> running PinchflatWeb.Endpoint (connection #PID<0.91161.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/50259/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/50259/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91161.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50259/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 57256}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50259", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91162.0>, params: %{}, path_info: ["sources", "4", "media", "50259", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/50259"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/50259/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_yM8AEuJ865EACY8B"} ], 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.91161.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50259/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 57256}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50259", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/50259/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91161.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50259/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 57256}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50259", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:47:58.277 [info] GET /sources/6/media/47466/force_download 02:47:58.278 [debug] QUERY OK source="settings" db=0.1ms idle=347.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:58.278 [debug] QUERY OK source="settings" db=0.0ms idle=76.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:47:58.278 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:47:58.278 [error] #PID<0.91164.0> running PinchflatWeb.Endpoint (connection #PID<0.91163.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/6/media/47466/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/6/media/47466/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91163.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/47466/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48940}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/47466", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91164.0>, params: %{}, path_info: ["sources", "6", "media", "47466", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/6/media/47466"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/6/media/47466/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_yRGdFS-TTuIACY8h"} ], 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.91163.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/47466/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48940}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/47466", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/6/media/47466/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91163.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/47466/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48940}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/47466", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:48:00.001 [info] GET /sources/5/media/48324/force_download 02:48:00.002 [debug] QUERY OK source="settings" db=0.1ms idle=1.8e3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:00.002 [debug] QUERY OK source="settings" db=0.0ms idle=1724.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:00.002 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:48:00.003 [error] #PID<0.91166.0> running PinchflatWeb.Endpoint (connection #PID<0.91165.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/5/media/48324/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/5/media/48324/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91165.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/48324/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48956}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/48324", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91166.0>, params: %{}, path_info: ["sources", "5", "media", "48324", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/5/media/48324"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/5/media/48324/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_yXhi1ZlR8mgACY9B"} ], 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.91165.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/48324/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48956}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/48324", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/5/media/48324/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91165.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/48324/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48956}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/48324", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:48:00.308 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:48:02.499 [info] GET /sources/7/media/50087/force_download 02:48:02.499 [debug] QUERY OK source="settings" db=0.2ms idle=1297.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:02.500 [debug] QUERY OK source="settings" db=0.0ms idle=565.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:02.500 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:48:02.500 [error] #PID<0.91168.0> running PinchflatWeb.Endpoint (connection #PID<0.91167.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50087/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50087/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91167.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50087/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48966}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50087", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91168.0>, params: %{}, path_info: ["sources", "7", "media", "50087", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/50087"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/50087/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_yg0_NuW1lBUACY9h"} ], 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.91167.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50087/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48966}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50087", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/50087/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91167.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50087/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48966}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50087", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:48:06.299 [info] GET /sources/5/media/49366/force_download 02:48:06.300 [debug] QUERY OK source="settings" db=0.1ms idle=361.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:06.300 [debug] QUERY OK source="settings" db=0.0ms idle=98.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:06.300 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:48:06.300 [error] #PID<0.91171.0> running PinchflatWeb.Endpoint (connection #PID<0.91170.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/5/media/49366/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/5/media/49366/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91170.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/49366/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48968}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/49366", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91171.0>, params: %{}, path_info: ["sources", "5", "media", "49366", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/5/media/49366"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/5/media/49366/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_yu_K_J_zU0MACY-B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91170.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/49366/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48968}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/49366", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/5/media/49366/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91170.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/49366/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 48968}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/49366", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:48:09.076 [info] {"source":"oban","duration":2023,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 02:48:11.993 [info] GET /sources/4/media/49837/force_download 02:48:11.993 [debug] QUERY OK source="settings" db=0.3ms idle=1791.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:11.994 [debug] QUERY OK source="settings" db=0.1ms idle=1792.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:11.994 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:48:11.994 [error] #PID<0.91175.0> running PinchflatWeb.Endpoint (connection #PID<0.91174.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/49837/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/49837/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91174.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49837/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 35634}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49837", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91175.0>, params: %{}, path_info: ["sources", "4", "media", "49837", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/49837"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/49837/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_zEMijzJmVNcACY_B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91174.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49837/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 35634}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49837", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/49837/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91174.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49837/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 35634}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49837", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:48:20.530 [info] GET /sources/7/media/49878/force_download 02:48:20.530 [debug] QUERY OK source="settings" db=0.1ms idle=1328.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:20.531 [debug] QUERY OK source="settings" db=0.1ms idle=1328.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:20.531 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:48:20.531 [error] #PID<0.91178.0> running PinchflatWeb.Endpoint (connection #PID<0.91177.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/49878/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/49878/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91177.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/49878/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47874}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/49878", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91178.0>, params: %{}, path_info: ["sources", "7", "media", "49878", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/49878"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/49878/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_zj_6i6VpusgACY_h"} ], 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.91177.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/49878/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47874}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/49878", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/49878/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91177.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/49878/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47874}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/49878", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:48:33.345 [info] GET /sources/4/media/50466/force_download 02:48:33.346 [debug] QUERY OK source="settings" db=0.1ms idle=1143.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:33.346 [debug] QUERY OK source="settings" db=0.0ms idle=1144.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:33.346 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:48:33.346 [error] #PID<0.91180.0> running PinchflatWeb.Endpoint (connection #PID<0.91179.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/50466/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/50466/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91179.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50466/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 34438}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50466", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91180.0>, params: %{}, path_info: ["sources", "4", "media", "50466", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/50466"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/50466/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_0TvUgQ4KKncACZAB"} ], 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.91179.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50466/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 34438}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50466", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/50466/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91179.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50466/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 34438}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50466", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:48:39.078 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:48:52.606 [info] GET /sources/3/media/47311/force_download 02:48:52.607 [debug] QUERY OK source="settings" db=0.3ms idle=1405.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:52.607 [debug] QUERY OK source="settings" db=0.1ms idle=621.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:48:52.607 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:48:52.608 [error] #PID<0.91184.0> running PinchflatWeb.Endpoint (connection #PID<0.91183.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/3/media/47311/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/47311/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91183.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/47311/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47490}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/47311", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91184.0>, params: %{}, path_info: ["sources", "3", "media", "47311", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/3/media/47311"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/3/media/47311/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_1bfj94x2Y3AABZgC"} ], 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.91183.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/47311/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47490}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/47311", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/3/media/47311/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91183.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/47311/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47490}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/47311", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:49:00.309 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:49:09.080 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:49:12.597 [info] GET /sources/3/media/49182/force_download 02:49:12.598 [debug] QUERY OK source="settings" db=0.1ms idle=591.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:49:12.598 [debug] QUERY OK source="settings" db=0.1ms idle=396.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:49:12.598 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:49:12.599 [error] #PID<0.91188.0> running PinchflatWeb.Endpoint (connection #PID<0.91187.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/3/media/49182/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/49182/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91187.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/49182/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 58930}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/49182", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91188.0>, params: %{}, path_info: ["sources", "3", "media", "49182", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/3/media/49182"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/3/media/49182/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_2l91Brc2QVAABZhC"} ], 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.91187.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/49182/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 58930}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/49182", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/3/media/49182/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91187.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/49182/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 58930}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/49182", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:49:32.583 [info] GET /sources/7/media/50511/force_download 02:49:32.584 [debug] QUERY OK source="settings" db=0.1ms idle=555.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:49:32.584 [debug] QUERY OK source="settings" db=0.1ms idle=382.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:49:32.584 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:49:32.585 [error] #PID<0.91193.0> running PinchflatWeb.Endpoint (connection #PID<0.91192.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50511/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50511/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91192.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 39558}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50511", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91193.0>, params: %{}, path_info: ["sources", "7", "media", "50511", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/50511"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/50511/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_3wa4PFcwmdIABZhi"} ], 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.91192.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 39558}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50511", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/50511/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91192.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 39558}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50511", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:49:39.082 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:49:52.607 [info] GET /sources/4/media/49006/force_download 02:49:52.607 [debug] QUERY OK source="settings" db=0.2ms idle=558.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:49:52.607 [debug] QUERY OK source="settings" db=0.0ms idle=405.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:49:52.607 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:49:52.608 [error] #PID<0.91197.0> running PinchflatWeb.Endpoint (connection #PID<0.91196.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/49006/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/49006/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91196.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49006/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 33226}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49006", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91197.0>, params: %{}, path_info: ["sources", "4", "media", "49006", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/49006"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/49006/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_47AwgLFj_ooABZiC"} ], 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.91196.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49006/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 33226}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49006", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/49006/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91196.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49006/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 33226}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49006", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:50:00.310 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:50:09.083 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:50:12.569 [info] GET /sources/7/media/32628/force_download 02:50:12.570 [debug] QUERY OK source="settings" db=0.1ms idle=501.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:12.570 [debug] QUERY OK source="settings" db=0.0ms idle=368.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:12.570 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:50:12.571 [error] #PID<0.91202.0> running PinchflatWeb.Endpoint (connection #PID<0.91201.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/32628/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/32628/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91201.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32628/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47458}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32628", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91202.0>, params: %{}, path_info: ["sources", "7", "media", "32628", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/32628"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/32628/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_6FYSHNTrOssABZii"} ], 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.91201.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32628/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47458}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32628", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/32628/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91201.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32628/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 47458}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32628", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:50:32.607 [info] GET /sources/7/media/50088/force_download 02:50:32.607 [debug] QUERY OK source="settings" db=0.2ms idle=518.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:32.607 [debug] QUERY OK source="settings" db=0.0ms idle=405.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:32.607 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:50:32.608 [error] #PID<0.91205.0> running PinchflatWeb.Endpoint (connection #PID<0.91204.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50088/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50088/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91204.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50088/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 44352}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50088", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91205.0>, params: %{}, path_info: ["sources", "7", "media", "50088", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/50088"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/50088/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_7QBgUmZc72kACZCB"} ], 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.91204.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50088/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 44352}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50088", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/50088/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91204.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50088/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 44352}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50088", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:50:39.086 [info] {"source":"oban","duration":1231,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:50:43.106 [info] {"args":{"id":5},"id":16319,"meta":{},"system_time":1792291843106794491,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 02:50:43.107 [debug] QUERY OK source="sources" db=0.1ms idle=905.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:43.107 [debug] QUERY OK source="settings" db=0.1ms idle=905.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:43.108 [debug] QUERY OK source="media_items" db=0.6ms idle=905.7ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 02:50:43.108 [debug] QUERY OK source="media_items" db=0.1ms idle=8.3ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 02:50:43.108 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:50:43.109 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:43.109 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:43.155 [debug] QUERY OK source="media_items" db=1.0ms idle=46.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" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [5] 02:50:43.156 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 02:50:43.156 [debug] Current batch of media processed. Will check again in 1000ms 02:50:43.156 [debug] QUERY OK source="settings" db=0.1ms idle=48.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:43.157 [debug] QUERY OK source="settings" db=0.0ms idle=48.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:43.157 [debug] QUERY OK source="settings" db=0.0ms idle=47.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:43.157 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@yalco-coding --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/얄팍한 코딩사전/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/21/bf/21bf9af2c0b7c0753ca9d19f68d1e1615fe0ffd10af3362ac09b69e057f2203e.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/31/ac/31ac27db44ddce89e8f0e95f0ea7a95cb6e66194ab2aeeab5600c07aaff144e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:50:44.157 [debug] Current batch of media processed. Will check again in 1000ms 02:50:45.158 [debug] Current batch of media processed. Will check again in 1000ms 02:50:46.159 [debug] Current batch of media processed. Will check again in 1000ms 02:50:47.161 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "리눅스(Linux) 입문, 검은 터미널이 낯설어도 괜찮습니다.\n13만 구독자 IT 유튜버 얄코와 AWS Ubuntu 서버를 직접 만들고, 리눅스 기본 명령어로 파일과 폴더를 다뤄보세요!\n\n이 영상은 「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」에서 입문 레슨들을 모은 약 75분의 무료파트입니다. 코딩 경험이 없는 분도 이해할 수 있도록, 낯선 개념은 쉬운 비유로 풀고 명령을 입력하는 이유와 결과를 함께 설명합니다.\n\n📚 전체 강의 안내\n「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」\n전체 강의는 인프런 공개 준비 중입니다.\n얄코 강의 안내: https://www.yalco.kr/#lectures\n\n🌱 이 무료 영상에서 배우는 내용\n• 리눅스를 배우는 이유와 내 컴퓨터·원격 서버의 차이\n• AWS 준비와 Ubuntu 서버 생성, 브라우저에서 서버 접속하기\n• 첫 명령어로 접속한 컴퓨터와 현재 위치 확인하기\n• 절대 경로·상대 경로를 이해하고 폴더 사이 이동하기\n• 실습 폴더와 파일을 만들고 목록 확인하기\n• cp·mv·rm으로 파일을 복사·이동·삭제하고 작업 대상 확인하기\n\nWindows PC나 Mac에서 따라 할 수 있습니다. 영상을 잠시 멈추고 직접 입력한 뒤, 화면에 나온 결과를 비교해보세요. 이번 영상의 수록 범위는 아래 장면별 목차를 기준으로 합니다.\n\n🚀 전체 강의에서는 여기까지 이어갑니다\n기본 명령어와 파일 관리에서 출발해, 리눅스 서버를 직접 다루고 운영하는 흐름을 단계별로 익힙니다.\n\n• 문서 읽기·편집, 압축·해제, 파일 검색과 파이프로 명령어 연결하기\n• 사용자·그룹·권한, 프로그램 설치, 프로세스·메모리·저장 공간 관리\n• SSH·파일 전송, IP·포트·방화벽과 연결 오류 점검\n• Nginx·systemd로 기초 웹앱을 실행하고 재부팅 후에도 동작하게 만들기\n• Bash 스크립트·cron으로 반복 점검과 백업 자동화\n• 로그로 고장 찾기, 앱 업데이트와 롤백, 서버 밖 백업으로 자료 복구\n\n전체 강의의 웹앱 실습에는 공지와 자료 목록을 보여주는 아주 기초적인 형태의 앱을 사용합니다. 앱 코드는 제공하며, 실행·설정·점검·복구를 통해 리눅스 운영의 기본기를 익히는 데 집중합니다.\n\n👋 이런 분께 추천합니다\n리눅스와 터미널이 처음인 분, 웹 개발·바이브코딩 이후 서버 사용법을 배우고 싶은 분, 복사해서 쓰던 명령어의 의미를 이해하고 싶은 분께 추천합니다.\n\n💡 실습 전 참고\n영상 시청은 무료이며, AWS 클라우드 실습 비용은 별도입니다. 서버를 만들기 전에 현재 요금을 확인하고, 실습 후 사용한 리소스를 정리해주세요. 서버 중지와 삭제는 다릅니다.\n\n⏱️ 장면별 목차\n00:00 - 강의소개\n05:21 - 내 컴퓨터와 서버를 구분하고 AWS 준비하기\n17:19 - Ubuntu 서버 만들고 브라우저로 접속하기\n26:51 - 첫 명령으로 내가 접속한 컴퓨터 확인하기\n34:27 - 리눅스의 위치와 경로 읽기\n47:52 - 내 실습 폴더와 파일 만들기\n59:22 - 복사/이동/삭제를 실수 없이 하기\n1:12:44 - 전체 강의 수강하기\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures\n\n도움이 되셨다면 좋아요와 구독으로 함께해주세요. 리눅스를 처음 배우는 분에게 이 영상도 공유해주세요!\n\n#리눅스 #리눅스강의 #리눅스기초 #Linux #Ubuntu #AWS #리눅스명령어 #서버운영 #얄코", "duration" => 4381, "filename" => "/downloads/얄팍한 코딩사전/2026-10-15 [업데이트] 리눅스 참교육 - AWS Ubuntu로 Linux 기초부터 서버 운영까지 (무료파트)/[업데이트] 리눅스 참교육 - AWS Ubuntu로 Linux 기초부터 서버 운영까지 (무료파트) [7Y1QIldi6OY].mp4", "id" => "7Y1QIldi6OY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=7Y1QIldi6OY", "playlist_index" => 1, "timestamp" => 1792037755, "title" => "[업데이트] 리눅스 참교육 - AWS Ubuntu로 Linux 기초부터 서버 운영까지 (무료파트)", "upload_date" => "20261015"} 02:50:47.162 [debug] QUERY OK source="sources" db=0.2ms idle=959.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 02:50:47.162 [debug] QUERY OK source="sources" db=0.0ms idle=960.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:47.163 [debug] QUERY OK source="media_items" db=0.6ms idle=960.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 04:15:55Z], 5] 02:50:47.164 [debug] QUERY OK source="media_items" db=1.3ms idle=961.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["리눅스(Linux) 입문, 검은 터미널이 낯설어도 괜찮습니다.\n13만 구독자 IT 유튜버 얄코와 AWS Ubuntu 서버를 직접 만들고, 리눅스 기본 명령어로 파일과 폴더를 다뤄보세요!\n\n이 영상은 「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」에서 입문 레슨들을 모은 약 75분의 무료파트입니다. 코딩 경험이 없는 분도 이해할 수 있도록, 낯선 개념은 쉬운 비유로 풀고 명령을 입력하는 이유와 결과를 함께 설명합니다.\n\n📚 전체 강의 안내\n「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」\n전체 강의는 인프런 공개 준비 중입니다.\n얄코 강의 안내: https://www.yalco.kr/#lectures\n\n🌱 이 무료 영상에서 배우는 내용\n• 리눅스를 배우는 이유와 내 컴퓨터·원격 서버의 차이\n• AWS 준비와 Ubuntu 서버 생성, 브라우저에서 서버 접속하기\n• 첫 명령어로 접속한 컴퓨터와 현재 위치 확인하기\n• 절대 경로·상대 경로를 이해하고 폴더 사이 이동하기\n• 실습 폴더와 파일을 만들고 목록 확인하기\n• cp·mv·rm으로 파일을 복사·이동·삭제하고 작업 대상 확인하기\n\nWindows PC나 Mac에서 따라 할 수 있습니다. 영상을 잠시 멈추고 직접 입력한 뒤, 화면에 나온 결과를 비교해보세요. 이번 영상의 수록 범위는 아래 장면별 목차를 기준으로 합니다.\n\n🚀 전체 강의에서는 여기까지 이어갑니다\n기본 명령어와 파일 관리에서 출발해, 리눅스 서버를 직접 다루고 운영하는 흐름을 단계별로 익힙니다.\n\n• 문서 읽기·편집, 압축·해제, 파일 검색과 파이프로 명령어 연결하기\n• 사용자·그룹·권한, 프로그램 설치, 프로세스·메모리·저장 공간 관리\n• SSH·파일 전송, IP·포트·방화벽과 연결 오류 점검\n• Nginx·systemd로 기초 웹앱을 실행하고 재부팅 후에도 동작하게 만들기\n• Bash 스크립트·cron으로 반복 점검과 백업 자동화\n• 로그로 고장 찾기, 앱 업데이트와 롤백, 서버 밖 백업으로 자료 복구\n\n전체 강의의 웹앱 실습에는 공지와 자료 목록을 보여주는 아주 기초적인 형태의 앱을 사용합니다. 앱 코드는 제공하며, 실행·설정·점검·복구를 통해 리눅스 운영의 기본기를 익히는 데 집중합니다.\n\n👋 이런 분께 추천합니다\n리눅스와 터미널이 처음인 분, 웹 개발·바이브코딩 이후 서버 사용법을 배우고 싶은 분, 복사해서 쓰던 명령어의 의미를 이해하고 싶은 분께 추천합니다.\n\n💡 실습 전 참고\n영상 시청은 무료이며, AWS 클라우드 실습 비용은 별도입니다. 서버를 만들기 전에 현재 요금을 확인하고, 실습 후 사용한 리소스를 정리해주세요. 서버 중지와 삭제는 다릅니다.\n\n⏱️ 장면별 목차\n00:00 - 강의소개\n05:21 - 내 컴퓨터와 서버를 구분하고 AWS 준비하기\n17:19 - Ubuntu 서버 만들고 브라우저로 접속하기\n26:51 - 첫 명령으로 내가 접속한 컴퓨터 확인하기\n34:27 - 리눅스의 위치와 경로 읽기\n47:52 - 내 실습 폴더와 파일 만들기\n59:22 - 복사/이동/삭제를 실수 없이 하기\n1:12:44 - 전체 강의 수강하기\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures\n\n도움이 되셨다면 좋아요와 구독으로 함께해주세요. 리눅스를 처음 배우는 분에게 이 영상도 공유해주세요!\n\n#리눅스 #리눅스강의 #리눅스기초 #Linux #Ubuntu #AWS #리눅스명령어 #서버운영 #얄코", "[업데이트] 리눅스 참교육 - AWS Ubuntu로 Linux 기초부터 서버 운영까지 (무료파트)", "262593e3-32aa-42e5-be8d-cfb37cceca05", false, 4381, false, "7Y1QIldi6OY", "https://www.youtube.com/watch?v=7Y1QIldi6OY", 1, "/downloads/얄팍한 코딩사전/2026-10-15 [업데이트] 리눅스 참교육 - AWS Ubuntu로 Linux 기초부터 서버 운영까지 (무료파트)/[업데이트] 리눅스 참교육 - AWS Ubuntu로 Linux 기초부터 서버 운영까지 (무료파트) [7Y1QIldi6OY].mp4", false, false, 5, [], 98, ~U[2026-10-15 04:15:55Z], ~U[2026-10-18 02:50:47Z], ~U[2026-10-18 02:50:47Z], "리눅스(Linux) 입문, 검은 터미널이 낯설어도 괜찮습니다.\n13만 구독자 IT 유튜버 얄코와 AWS Ubuntu 서버를 직접 만들고, 리눅스 기본 명령어로 파일과 폴더를 다뤄보세요!\n\n이 영상은 「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」에서 입문 레슨들을 모은 약 75분의 무료파트입니다. 코딩 경험이 없는 분도 이해할 수 있도록, 낯선 개념은 쉬운 비유로 풀고 명령을 입력하는 이유와 결과를 함께 설명합니다.\n\n📚 전체 강의 안내\n「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」\n전체 강의는 인프런 공개 준비 중입니다.\n얄코 강의 안내: https://www.yalco.kr/#lectures\n\n🌱 이 무료 영상에서 배우는 내용\n• 리눅스를 배우는 이유와 내 컴퓨터·원격 서버의 차이\n• AWS 준비와 Ubuntu 서버 생성, 브라우저에서 서버 접속하기\n• 첫 명령어로 접속한 컴퓨터와 현재 위치 확인하기\n• 절대 경로·상대 경로를 이해하고 폴더 사이 이동하기\n• 실습 폴더와 파일을 만들고 목록 확인하기\n• cp·mv·rm으로 파일을 복사·이동·삭제하고 작업 대상 확인하기\n\nWindows PC나 Mac에서 따라 할 수 있습니다. 영상을 잠시 멈추고 직접 입력한 뒤, 화면에 나온 결과를 비교해보세요. 이번 영상의 수록 범위는 아래 장면별 목차를 기준으로 합니다.\n\n🚀 전체 강의에서는 여기까지 이어갑니다\n기본 명령어와 파일 관리에서 출발해, 리눅스 서버를 직접 다루고 운영하는 흐름을 단계별로 익힙니다.\n\n• 문서 읽기·편집, 압축·해제, 파일 검색과 파이프로 명령어 연결하기\n• 사용자·그룹·권한, 프로그램 설치, 프로세스·메모리·저장 공간 관리\n• SSH·파일 전송, IP·포트·방화벽과 연결 오류 점검\n• Nginx·systemd로 기초 웹앱을 실행하고 재부팅 후에도 동작하게 만들기\n• Bash 스크립트·cron으로 반복 점검과 백업 자동화\n• 로그로 고장 찾기, 앱 업데이트와 롤백, 서버 밖 백업으로 자료 복구\n\n전체 강의의 웹앱 실습에는 공지와 자료 목록을 보여주는 아주 기초적인 형태의 앱을 사용합니다. 앱 코드는 제공하며, 실행·설정·점검·복구를 통해 리눅스 운영의 기본기를 익히는 데 집중합니다.\n\n👋 이런 분께 추천합니다\n리눅스와 터미널이 처음인 분, 웹 개발·바이브코딩 이후 서버 사용법을 배우고 싶은 분, 복사해서 쓰던 명령어의 의미를 이해하고 싶은 분께 추천합니다.\n\n💡 실습 전 참고\n영상 시청은 무료이며, AWS (truncated) 02:50:47.165 [debug] QUERY OK source="sources" db=0.2ms idle=60.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:47.165 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:50:47.166 [debug] QUERY OK source="media_items" db=0.2ms idle=3.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 [50203] 02:50:47.166 [debug] Current batch of media processed. Will check again in 1000ms 02:50:48.167 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "국내주식부터 미국주식까지, 나만의 자동매매 프로그램을 AI로 직접 만들어보세요.\n코딩을 전혀 몰라도 설치부터 따라갈 수 있는 얄코의 새 강의, 완성 예시와 주요 기능을 소개합니다.\n\n🎉 전체강의 얼리버드 할인중입니다!\n강의 링크: https://inf.run/MhYgo\n\n🎁 기존 얄코 강의 수강자분들을 위한 추가할인: https://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n어려운 코딩은 코덱스(Codex)에게 맡기고, 우리는 필요한 기능을 우리말로 설명합니다. 준비된 요청문을 복사해 따라 만드는 것부터 시작해, 나중에는 내 아이디어와 매매 기준을 프로그램에 추가하는 방법까지 배웁니다.\n\n✅ 이런 프로그램을 만듭니다\n• 국내·미국 주식 계좌 확인, 종목 검색과 순위 조회\n• 관심 종목 수집과 조건검색식 연동\n• 돌파·반등 등 조건에 따른 자동매수\n• 손절·익절, 트레일링 스탑 등 자동매도\n• 분할매매·그리드 등 매수와 매도를 연결한 전략\n• 주문 체결·취소 텔레그램 알림\n• 스마트폰 접속과 온라인 서버 운영\n\n✅ 처음 만드는 분들을 위해\n• 필요한 프로그램 설치와 설정부터 차근차근\n• 실제 투자금 없이 모의투자로 동작 테스트\n• 오류를 AI와 함께 해결하고 이전 상태로 되돌리는 방법\n• 내가 원하는 기능을 추가하며 프로그램 확장하기\n\n이 영상은 전체 강의의 소개 영상입니다. 강의에서는 기능을 하나씩 구현하며 나만의 프로그램을 만들어갑니다. 국내·미국 시장별로 사용할 수 있는 기능에는 차이가 있습니다.\n\n📌 수강 전 확인해 주세요\n완성 프로그램을 판매·제공하는 과정이 아니라, AI를 활용해 직접 만드는 방법을 배우는 강의입니다. 결과물의 디자인과 세부 기능은 달라질 수 있습니다.\n투자 수익을 보장하거나 특정 종목·매매 전략을 추천하지 않습니다. 모의투자와 충분한 점검을 거쳐 실투자를 준비하며, 투자 판단과 책임은 본인에게 있습니다.\n\n👨\u200D💻 개발자 수강 안내\n비개발자와 컴퓨터 사용이 익숙하지 않은 분들을 위한 과정으로, 기초 설명이 반복되며 코덱스의 고급 기능을 중심으로 다루지 않습니다. 개발자 대상 할인·이벤트 안내는 아래에서 확인해 주세요.\nhttps://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures\n\n#주식자동매매 #미국주식 #바이브코딩", "duration" => 391, "filename" => "/downloads/얄팍한 코딩사전/2026-09-09 코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩/코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩 [OVAHh_wR09Y].mp4", "id" => "OVAHh_wR09Y", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OVAHh_wR09Y", "playlist_index" => 2, "timestamp" => 1788921097, "title" => "코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩", "upload_date" => "20260909"} 02:50:48.167 [debug] QUERY OK source="sources" db=0.2ms idle=1002.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 02:50:48.168 [debug] QUERY OK source="sources" db=0.1ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:48.169 [debug] QUERY OK source="media_items" db=0.5ms idle=1002.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-09 02:31:37Z], 5] 02:50:48.170 [debug] QUERY OK source="media_items" db=1.1ms idle=1003.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["국내주식부터 미국주식까지, 나만의 자동매매 프로그램을 AI로 직접 만들어보세요.\n코딩을 전혀 몰라도 설치부터 따라갈 수 있는 얄코의 새 강의, 완성 예시와 주요 기능을 소개합니다.\n\n🎉 전체강의 얼리버드 할인중입니다!\n강의 링크: https://inf.run/MhYgo\n\n🎁 기존 얄코 강의 수강자분들을 위한 추가할인: https://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n어려운 코딩은 코덱스(Codex)에게 맡기고, 우리는 필요한 기능을 우리말로 설명합니다. 준비된 요청문을 복사해 따라 만드는 것부터 시작해, 나중에는 내 아이디어와 매매 기준을 프로그램에 추가하는 방법까지 배웁니다.\n\n✅ 이런 프로그램을 만듭니다\n• 국내·미국 주식 계좌 확인, 종목 검색과 순위 조회\n• 관심 종목 수집과 조건검색식 연동\n• 돌파·반등 등 조건에 따른 자동매수\n• 손절·익절, 트레일링 스탑 등 자동매도\n• 분할매매·그리드 등 매수와 매도를 연결한 전략\n• 주문 체결·취소 텔레그램 알림\n• 스마트폰 접속과 온라인 서버 운영\n\n✅ 처음 만드는 분들을 위해\n• 필요한 프로그램 설치와 설정부터 차근차근\n• 실제 투자금 없이 모의투자로 동작 테스트\n• 오류를 AI와 함께 해결하고 이전 상태로 되돌리는 방법\n• 내가 원하는 기능을 추가하며 프로그램 확장하기\n\n이 영상은 전체 강의의 소개 영상입니다. 강의에서는 기능을 하나씩 구현하며 나만의 프로그램을 만들어갑니다. 국내·미국 시장별로 사용할 수 있는 기능에는 차이가 있습니다.\n\n📌 수강 전 확인해 주세요\n완성 프로그램을 판매·제공하는 과정이 아니라, AI를 활용해 직접 만드는 방법을 배우는 강의입니다. 결과물의 디자인과 세부 기능은 달라질 수 있습니다.\n투자 수익을 보장하거나 특정 종목·매매 전략을 추천하지 않습니다. 모의투자와 충분한 점검을 거쳐 실투자를 준비하며, 투자 판단과 책임은 본인에게 있습니다.\n\n👨\u200D💻 개발자 수강 안내\n비개발자와 컴퓨터 사용이 익숙하지 않은 분들을 위한 과정으로, 기초 설명이 반복되며 코덱스의 고급 기능을 중심으로 다루지 않습니다. 개발자 대상 할인·이벤트 안내는 아래에서 확인해 주세요.\nhttps://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures\n\n#주식자동매매 #미국주식 #바이브코딩", "코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩", "a2a8631d-91c1-4101-bfa3-5b796cba5130", false, 391, false, "OVAHh_wR09Y", "https://www.youtube.com/watch?v=OVAHh_wR09Y", 2, "/downloads/얄팍한 코딩사전/2026-09-09 코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩/코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩 [OVAHh_wR09Y].mp4", false, false, 5, [], 98, ~U[2026-09-09 02:31:37Z], ~U[2026-10-18 02:50:48Z], ~U[2026-10-18 02:50:48Z], "국내주식부터 미국주식까지, 나만의 자동매매 프로그램을 AI로 직접 만들어보세요.\n코딩을 전혀 몰라도 설치부터 따라갈 수 있는 얄코의 새 강의, 완성 예시와 주요 기능을 소개합니다.\n\n🎉 전체강의 얼리버드 할인중입니다!\n강의 링크: https://inf.run/MhYgo\n\n🎁 기존 얄코 강의 수강자분들을 위한 추가할인: https://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n어려운 코딩은 코덱스(Codex)에게 맡기고, 우리는 필요한 기능을 우리말로 설명합니다. 준비된 요청문을 복사해 따라 만드는 것부터 시작해, 나중에는 내 아이디어와 매매 기준을 프로그램에 추가하는 방법까지 배웁니다.\n\n✅ 이런 프로그램을 만듭니다\n• 국내·미국 주식 계좌 확인, 종목 검색과 순위 조회\n• 관심 종목 수집과 조건검색식 연동\n• 돌파·반등 등 조건에 따른 자동매수\n• 손절·익절, 트레일링 스탑 등 자동매도\n• 분할매매·그리드 등 매수와 매도를 연결한 전략\n• 주문 체결·취소 텔레그램 알림\n• 스마트폰 접속과 온라인 서버 운영\n\n✅ 처음 만드는 분들을 위해\n• 필요한 프로그램 설치와 설정부터 차근차근\n• 실제 투자금 없이 모의투자로 동작 테스트\n• 오류를 AI와 함께 해결하고 이전 상태로 되돌리는 방법\n• 내가 원하는 기능을 추가하며 프로그램 확장하기\n\n이 영상은 전체 강의의 소개 영상입니다. 강의에서는 기능을 하나씩 구현하며 나만의 프로그램을 만들어갑니다. 국내·미국 시장별로 사용할 수 있는 기능에는 차이가 있습니다.\n\n📌 수강 전 확인해 주세요\n완성 프로그램을 판매·제공하는 과정이 아니라, AI를 활용해 직접 만드는 방법을 배우는 강의입니다. 결과물의 디자인과 세부 기능은 달라질 수 있습니다.\n투자 수익을 보장하거나 특정 종목·매매 전략을 추천하지 않습니다. 모의투자와 충분한 점검을 거쳐 실투자를 준비하며, 투자 판단과 책임은 본인에게 있습니다.\n\n👨\u200D💻 개발자 수강 안내\n비개발자와 컴퓨터 사용이 익숙하지 않은 분들을 위한 과정으로, 기초 설명이 반복되며 코덱스의 고급 기능을 중심으로 다루지 않습니다. 개발자 대상 할인·이벤트 안내는 아래에서 확인해 주세요.\nhttps://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures\n\n#주식자동매매 #미국주식 #바이브코딩", "코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩", 391, false, "OVAHh_wR09Y", "https://www.youtube.com/watch?v=OVAHh_wR09Y", "/downloads/얄팍한 코딩사전/2026-09-09 코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩/코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩 [OVAHh_wR09Y].mp4", false, 5, ~U[2026-09-09 02:31:37Z]] 02:50:48.170 [debug] QUERY OK source="sources" db=0.1ms idle=65.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:48.171 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:50:48.171 [debug] QUERY OK source="media_items" db=0.1ms 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 [42549] 02:50:48.171 [debug] Current batch of media processed. Will check again in 1000ms 02:50:49.171 [debug] Current batch of media processed. Will check again in 1000ms 02:50:50.173 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#코덱스 #codex #바이브코딩 #ai \n\n00:00 전체강의 & 할인 정보\n00:04 코덱스 & 강의 소개\n7:38 설치 및 세팅 - 코덱스 앱\n20:40 설치 및 세팅 - 코드 에디터 확장\n31:43 설치 및 세팅 - 터미널용 코덱스\n41:06 코덱스 플러그인\n55:35 코덱스 자동화\n1:09:54 전체 강좌 수강하기 & 할인쿠폰\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html\n\nCodex는 개발자만을 위한 코딩 도구가 아닙니다.\n에이전트에게 목표와 조건을 명확히 전달하고 작업 과정을 조정·검증할 수 있다면, 코딩 경험이 없어도 웹페이지와 프로그램을 만들고 문서 제작, 자료 조사, 이메일·일정 관리와 반복 업무 자동화까지 맡길 수 있습니다.\n\n전체 강의에서는 다음 내용을 기초부터 차근차근 다룹니다.\n- Windows·macOS에서 Codex 설치 및 설정\n- Codex 앱, VS Code, 터미널 사용법\n- 웹페이지, 게임, 할 일 앱 제작\n- Gmail, Google Calendar, Slack, Notion, 브라우저 활용\n- 뉴스 수집, 메일 작성, 파일 정리 등 반복 업무 자동화\n- 스티어링, 플랜 모드, 골 모드와 멀티 에이전트\n- Codex를 일관되고 안전하게 일하게 만드는 하네스 엔지니어링\n- 나만의 반복 업무 기능과 외부 서비스 연결 도구 제작\n- Git, Diff, Review를 활용한 변경사항 관리\n- Codex 클라우드·웹, 루프 엔지니어링\n- Hooks 등 고급 기능\n\n코딩 경험이 없는 분도 따라올 수 있도록 어려운 개념은 얄코답게 친숙한 비유와 실습으로 쉽게 설명합니다. \n개발자에게는 실제 프로젝트의 구현, 테스트, 리뷰와 에이전트 작업 환경 설계까지 이어지는 심화 내용을 제공합니다.\n\n특히 현재 기능만 알려드리는 데서 끝나지 않습니다. 빠르게 업데이트되는 Codex의 새로운 기능과 변경사항을 OpenAI 공식 가이드에서 직접 확인하고 스스로 학습하는 방법까지 배웁니다.\n\n이런 분께 추천합니다.\n코딩 없이 웹페이지나 작은 프로그램을 만들고 싶은 분\n이메일, 일정, 자료 조사 등 반복 업무를 자동화하고 싶은 분\n바이브 코딩을 가장 쉬운 단계부터 배우고 싶은 분\nCodex를 개발·테스트·리뷰에 활용하고 싶은 개발자\nAI 에이전트를 정확하고 안전하게 다루는 방법을 배우고 싶은 분\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html", "duration" => 4210, "filename" => "/downloads/얄팍한 코딩사전/2026-07-20 코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지/코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지 [Bzdcg70ivrs].mp4", "id" => "Bzdcg70ivrs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Bzdcg70ivrs", "playlist_index" => 3, "timestamp" => 1784546934, "title" => "코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지", "upload_date" => "20260720"} 02:50:50.173 [debug] QUERY OK source="sources" db=0.1ms idle=971.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 02:50:50.174 [debug] QUERY OK source="sources" db=0.2ms idle=971.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:50.174 [debug] QUERY OK source="media_items" db=0.5ms idle=972.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-20 11:28:54Z], 5] 02:50:50.176 [debug] QUERY OK source="media_items" db=1.0ms idle=973.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#코덱스 #codex #바이브코딩 #ai \n\n00:00 전체강의 & 할인 정보\n00:04 코덱스 & 강의 소개\n7:38 설치 및 세팅 - 코덱스 앱\n20:40 설치 및 세팅 - 코드 에디터 확장\n31:43 설치 및 세팅 - 터미널용 코덱스\n41:06 코덱스 플러그인\n55:35 코덱스 자동화\n1:09:54 전체 강좌 수강하기 & 할인쿠폰\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html\n\nCodex는 개발자만을 위한 코딩 도구가 아닙니다.\n에이전트에게 목표와 조건을 명확히 전달하고 작업 과정을 조정·검증할 수 있다면, 코딩 경험이 없어도 웹페이지와 프로그램을 만들고 문서 제작, 자료 조사, 이메일·일정 관리와 반복 업무 자동화까지 맡길 수 있습니다.\n\n전체 강의에서는 다음 내용을 기초부터 차근차근 다룹니다.\n- Windows·macOS에서 Codex 설치 및 설정\n- Codex 앱, VS Code, 터미널 사용법\n- 웹페이지, 게임, 할 일 앱 제작\n- Gmail, Google Calendar, Slack, Notion, 브라우저 활용\n- 뉴스 수집, 메일 작성, 파일 정리 등 반복 업무 자동화\n- 스티어링, 플랜 모드, 골 모드와 멀티 에이전트\n- Codex를 일관되고 안전하게 일하게 만드는 하네스 엔지니어링\n- 나만의 반복 업무 기능과 외부 서비스 연결 도구 제작\n- Git, Diff, Review를 활용한 변경사항 관리\n- Codex 클라우드·웹, 루프 엔지니어링\n- Hooks 등 고급 기능\n\n코딩 경험이 없는 분도 따라올 수 있도록 어려운 개념은 얄코답게 친숙한 비유와 실습으로 쉽게 설명합니다. \n개발자에게는 실제 프로젝트의 구현, 테스트, 리뷰와 에이전트 작업 환경 설계까지 이어지는 심화 내용을 제공합니다.\n\n특히 현재 기능만 알려드리는 데서 끝나지 않습니다. 빠르게 업데이트되는 Codex의 새로운 기능과 변경사항을 OpenAI 공식 가이드에서 직접 확인하고 스스로 학습하는 방법까지 배웁니다.\n\n이런 분께 추천합니다.\n코딩 없이 웹페이지나 작은 프로그램을 만들고 싶은 분\n이메일, 일정, 자료 조사 등 반복 업무를 자동화하고 싶은 분\n바이브 코딩을 가장 쉬운 단계부터 배우고 싶은 분\nCodex를 개발·테스트·리뷰에 활용하고 싶은 개발자\nAI 에이전트를 정확하고 안전하게 다루는 방법을 배우고 싶은 분\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html", "코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지", "ec3a0e05-bb66-4c06-b756-0b7bb3496996", false, 4210, false, "Bzdcg70ivrs", "https://www.youtube.com/watch?v=Bzdcg70ivrs", 3, "/downloads/얄팍한 코딩사전/2026-07-20 코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지/코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지 [Bzdcg70ivrs].mp4", false, false, 5, [], 98, ~U[2026-07-20 11:28:54Z], ~U[2026-10-18 02:50:50Z], ~U[2026-10-18 02:50:50Z], "#코덱스 #codex #바이브코딩 #ai \n\n00:00 전체강의 & 할인 정보\n00:04 코덱스 & 강의 소개\n7:38 설치 및 세팅 - 코덱스 앱\n20:40 설치 및 세팅 - 코드 에디터 확장\n31:43 설치 및 세팅 - 터미널용 코덱스\n41:06 코덱스 플러그인\n55:35 코덱스 자동화\n1:09:54 전체 강좌 수강하기 & 할인쿠폰\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html\n\nCodex는 개발자만을 위한 코딩 도구가 아닙니다.\n에이전트에게 목표와 조건을 명확히 전달하고 작업 과정을 조정·검증할 수 있다면, 코딩 경험이 없어도 웹페이지와 프로그램을 만들고 문서 제작, 자료 조사, 이메일·일정 관리와 반복 업무 자동화까지 맡길 수 있습니다.\n\n전체 강의에서는 다음 내용을 기초부터 차근차근 다룹니다.\n- Windows·macOS에서 Codex 설치 및 설정\n- Codex 앱, VS Code, 터미널 사용법\n- 웹페이지, 게임, 할 일 앱 제작\n- Gmail, Google Calendar, Slack, Notion, 브라우저 활용\n- 뉴스 수집, 메일 작성, 파일 정리 등 반복 업무 자동화\n- 스티어링, 플랜 모드, 골 모드와 멀티 에이전트\n- Codex를 일관되고 안전하게 일하게 만드는 하네스 엔지니어링\n- 나만의 반복 업무 기능과 외부 서비스 연결 도구 제작\n- Git, Diff, Review를 활용한 변경사항 관리\n- Codex 클라우드·웹, 루프 엔지니어링\n- Hooks 등 고급 기능\n\n코딩 경험이 없는 분도 따라올 수 있도록 어려운 개념은 얄코답게 친숙한 비유와 실습으로 쉽게 설명합니다. \n개발자에게는 실제 프로젝트의 구현, 테스트, 리뷰와 에이전트 작업 환경 설계까지 이어지는 심화 내용을 제공합니다.\n\n특히 현재 기능만 알려드리는 데서 끝나지 않습니다. 빠르게 업데이트되는 Codex의 새로운 기능과 변경사항을 OpenAI 공식 가이드에서 직접 확인하고 스스로 학습하는 방법까지 배웁니다.\n\n이런 분께 추천합니다.\n코딩 없이 웹페이지나 작은 프로그램을 만들고 싶은 분\n이메일, 일정, 자료 조사 등 반복 업무를 자동화하고 싶은 분\n바이브 코딩을 가장 쉬운 단계부터 배우고 싶은 분\nCodex를 개발·테스트·리뷰에 활용하고 싶은 개발자\nAI 에이전트를 정확하고 안전하게 다루는 방법을 배우고 싶은 분\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html", "코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지", 4210, false, "Bzdcg70ivrs", "https://www.youtube.com/watch?v=Bzdcg70ivrs", "/downloads/얄팍한 코딩사전/2026-07-20 코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지/코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지 [Bzdcg70ivrs].mp4", false, 5, ~U[2026-07-20 11:28:54Z]] 02:50:50.176 [debug] QUERY OK source="sources" db=0.1ms idle=68.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:50.176 [debug] QUERY OK source="media_profiles" db=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] 02:50:50.177 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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 [37616] 02:50:50.177 [debug] Current batch of media processed. Will check again in 1000ms 02:50:51.178 [debug] Current batch of media processed. Will check again in 1000ms 02:50:52.179 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#바이브코딩 #ai코딩 #html #css #자바스크립트 #리액트 #타입스크립트\n\n00:00 인트로 + 할인 이벤트\n00:45 [HTML CSS] 강의를 듣는 방법\n06:01 [HTML CSS] 수강을 위한 환경 세팅\n15:35 [HTML CSS] HTML, CSS, JavaScript가 뭔가요?\n21:39 [HTML CSS] 제목과 본문\n42:28 [HTML CSS] 종류와 중요도에 따른 태그\n52:08 [HTML CSS] 인용된 컨텐츠\n1:03:48 [HTML CSS] 나열되는 요소들\n1:12:33 [HTML CSS] 이미지 넣기\n1:24:25 [자바스크립트] 강의를 듣는 방법\n1:31:10 [자바스크립트] 수강을 위한 환경 세팅\n1:44:31: [자바스크립트] 콘솔 활용하기\n1:55:48 [자바스크립트] 주석과 세미콜론\n2:03:05 [자바스크립트] 변수와 상수\n2:21:10 [자바스크립트] 자료형\n2:31:43 [자바스크립트] 자료형과 정적, 동적 타입\n2:36:29 [자바스크립트] 문자열\n2:45:43 [자바스크립트] 문자열 연산자\n2:59:08 [자바스크립트] 숫자와 관련 연산자\n3:10:10 [리액트] 리액트 소개\n3:16:19 [리액트] 실습을 위한 환경설정\n3:22:01 [리액트] 예제페이지 활용 & 질문 방법\n3:23:49 [리액트] 프로젝트 생성하기\n3:32:20 [리액트] 프로젝트 명령어 생성하기\n3:39:26 [리액트] 리액트 프로젝트 살펴보기\n3:47:35 [리액트] 컴포넌트 기초\n3:56:15 [리액트] JSX 문법 기초\n4:03:43 [리액트] 조건부 렌더링과 리스트 렌더링\n4:14:08 [리액트] JSX 속성과 스타일링\n4:25:13 [타입스크립트] 타입스크립트 소개\n4:31:01 [타입스크립트] Node.js 설치\n4:38:11 [타입스크립트] 타입스크립트 설치하고 사용해보기\n4:46:44 [타입스크립트] 타입 표기와 기본 자료형\n4:54:33 [타입스크립트] any 타입과 unkown 타입\n5:03:54 [타입스크립트] null, undefined, void, never\n5:13:11: [타입스크립트] 배열과 튜플, 객체 기초\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 전체 강의, 바이브코딩 등 다른 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "duration" => 19602, "filename" => "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지/[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지 [xrQwDWZnMLQ].mp4", "id" => "xrQwDWZnMLQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xrQwDWZnMLQ", "playlist_index" => 4, "timestamp" => 1781222456, "title" => "[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지", "upload_date" => "20260612"} 02:50:52.179 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?)) [5] 02:50:52.180 [debug] QUERY OK source="sources" db=0.1ms idle=978.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:52.180 [debug] QUERY OK source="media_items" db=0.5ms idle=978.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-12 00:00:56Z], 5] 02:50:52.182 [debug] QUERY OK source="media_items" db=0.8ms idle=979.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#바이브코딩 #ai코딩 #html #css #자바스크립트 #리액트 #타입스크립트\n\n00:00 인트로 + 할인 이벤트\n00:45 [HTML CSS] 강의를 듣는 방법\n06:01 [HTML CSS] 수강을 위한 환경 세팅\n15:35 [HTML CSS] HTML, CSS, JavaScript가 뭔가요?\n21:39 [HTML CSS] 제목과 본문\n42:28 [HTML CSS] 종류와 중요도에 따른 태그\n52:08 [HTML CSS] 인용된 컨텐츠\n1:03:48 [HTML CSS] 나열되는 요소들\n1:12:33 [HTML CSS] 이미지 넣기\n1:24:25 [자바스크립트] 강의를 듣는 방법\n1:31:10 [자바스크립트] 수강을 위한 환경 세팅\n1:44:31: [자바스크립트] 콘솔 활용하기\n1:55:48 [자바스크립트] 주석과 세미콜론\n2:03:05 [자바스크립트] 변수와 상수\n2:21:10 [자바스크립트] 자료형\n2:31:43 [자바스크립트] 자료형과 정적, 동적 타입\n2:36:29 [자바스크립트] 문자열\n2:45:43 [자바스크립트] 문자열 연산자\n2:59:08 [자바스크립트] 숫자와 관련 연산자\n3:10:10 [리액트] 리액트 소개\n3:16:19 [리액트] 실습을 위한 환경설정\n3:22:01 [리액트] 예제페이지 활용 & 질문 방법\n3:23:49 [리액트] 프로젝트 생성하기\n3:32:20 [리액트] 프로젝트 명령어 생성하기\n3:39:26 [리액트] 리액트 프로젝트 살펴보기\n3:47:35 [리액트] 컴포넌트 기초\n3:56:15 [리액트] JSX 문법 기초\n4:03:43 [리액트] 조건부 렌더링과 리스트 렌더링\n4:14:08 [리액트] JSX 속성과 스타일링\n4:25:13 [타입스크립트] 타입스크립트 소개\n4:31:01 [타입스크립트] Node.js 설치\n4:38:11 [타입스크립트] 타입스크립트 설치하고 사용해보기\n4:46:44 [타입스크립트] 타입 표기와 기본 자료형\n4:54:33 [타입스크립트] any 타입과 unkown 타입\n5:03:54 [타입스크립트] null, undefined, void, never\n5:13:11: [타입스크립트] 배열과 튜플, 객체 기초\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 전체 강의, 바이브코딩 등 다른 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지", "63e7c550-abbd-4270-9556-8a3a6179bb33", false, 19602, false, "xrQwDWZnMLQ", "https://www.youtube.com/watch?v=xrQwDWZnMLQ", 4, "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지/[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지 [xrQwDWZnMLQ].mp4", false, false, 5, [], 97, ~U[2026-06-12 00:00:56Z], ~U[2026-10-18 02:50:52Z], ~U[2026-10-18 02:50:52Z], "#바이브코딩 #ai코딩 #html #css #자바스크립트 #리액트 #타입스크립트\n\n00:00 인트로 + 할인 이벤트\n00:45 [HTML CSS] 강의를 듣는 방법\n06:01 [HTML CSS] 수강을 위한 환경 세팅\n15:35 [HTML CSS] HTML, CSS, JavaScript가 뭔가요?\n21:39 [HTML CSS] 제목과 본문\n42:28 [HTML CSS] 종류와 중요도에 따른 태그\n52:08 [HTML CSS] 인용된 컨텐츠\n1:03:48 [HTML CSS] 나열되는 요소들\n1:12:33 [HTML CSS] 이미지 넣기\n1:24:25 [자바스크립트] 강의를 듣는 방법\n1:31:10 [자바스크립트] 수강을 위한 환경 세팅\n1:44:31: [자바스크립트] 콘솔 활용하기\n1:55:48 [자바스크립트] 주석과 세미콜론\n2:03:05 [자바스크립트] 변수와 상수\n2:21:10 [자바스크립트] 자료형\n2:31:43 [자바스크립트] 자료형과 정적, 동적 타입\n2:36:29 [자바스크립트] 문자열\n2:45:43 [자바스크립트] 문자열 연산자\n2:59:08 [자바스크립트] 숫자와 관련 연산자\n3:10:10 [리액트] 리액트 소개\n3:16:19 [리액트] 실습을 위한 환경설정\n3:22:01 [리액트] 예제페이지 활용 & 질문 방법\n3:23:49 [리액트] 프로젝트 생성하기\n3:32:20 [리액트] 프로젝트 명령어 생성하기\n3:39:26 [리액트] 리액트 프로젝트 살펴보기\n3:47:35 [리액트] 컴포넌트 기초\n3:56:15 [리액트] JSX 문법 기초\n4:03:43 [리액트] 조건부 렌더링과 리스트 렌더링\n4:14:08 [리액트] JSX 속성과 스타일링\n4:25:13 [타입스크립트] 타입스크립트 소개\n4:31:01 [타입스크립트] Node.js 설치\n4:38:11 [타입스크립트] 타입스크립트 설치하고 사용해보기\n4:46:44 [타입스크립트] 타입 표기와 기본 자료형\n4:54:33 [타입스크립트] any 타입과 unkown 타입\n5:03:54 [타입스크립트] null, undefined, void, never\n5:13:11: [타입스크립트] 배열과 튜플, 객체 기초\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 전체 강의, 바이브코딩 등 다른 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지", 19602, false, "xrQwDWZnMLQ", "https://www.youtube.com/watch?v=xrQwDWZnMLQ", "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지/[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지 [xrQwDWZnMLQ].mp4", false, 5, ~U[2026-06-12 00:00:56Z]] 02:50:52.182 [debug] QUERY OK source="sources" db=0.3ms idle=72.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:52.183 [debug] QUERY OK source="media_profiles" db=0.3ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:50:52.183 [debug] QUERY OK source="media_items" db=0.2ms idle=3.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 [37617] 02:50:52.183 [debug] Current batch of media processed. Will check again in 1000ms 02:50:52.583 [info] GET /sources/4/media/49630/force_download 02:50:52.583 [debug] QUERY OK source="settings" db=0.2ms idle=402.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:52.584 [debug] QUERY OK source="settings" db=0.0ms idle=402.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:52.584 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:50:52.584 [error] #PID<0.91214.0> running PinchflatWeb.Endpoint (connection #PID<0.91213.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/49630/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/49630/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91213.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49630/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 50154}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49630", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91214.0>, params: %{}, path_info: ["sources", "4", "media", "49630", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/49630"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/49630/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_8acKQUj2mhUABZli"} ], 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.91213.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49630/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 50154}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49630", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/49630/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91213.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49630/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 50154}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49630", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:50:53.183 [debug] Current batch of media processed. Will check again in 1000ms 02:50:54.185 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#git #github #깃허브 #바이브코딩 #ai #코딩\n\n= = =\n\n00:00 인트로 + 할인 이벤트\n39:20 Git을 배워야 하는 이유\n3:27 설치 및 설정 - 윈도우\n13:31 설치 및 설정 - 맥\n21:20 CLI vs. GUI\n24:17 초기설정 & Git 저장소 생성하기\n36:07 Git에게 맡기지 않을 것들\n43:41 변화를 타임캡슐에 담아 묻기\n1:00:10 과거로 돌아가는 세 가지 방법\n1:09:54 나머지 두 방법들\n1:18:23 GUI 및 AI로 진행해보기\n1:25:27 여러 브랜치 만들어보기\n1:40:44 브랜치를 합치는 두 가지 방법\n1:47:47 충돌 해결하기\n1:56:30 GUI로 진행해보기\n2:05:20 GitHub을 사용하는 이유\n2:10:21 전체 강의 듣기 + 할인 이벤트\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "duration" => 7836, "filename" => "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림/[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림 [GWNkIeVtlpI].mp4", "id" => "GWNkIeVtlpI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=GWNkIeVtlpI", "playlist_index" => 5, "timestamp" => 1781222453, "title" => "[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림", "upload_date" => "20260612"} 02:50:54.185 [debug] QUERY OK source="sources" db=0.2ms idle=1601.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 02:50:54.186 [debug] QUERY OK source="sources" db=0.1ms idle=1075.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:54.186 [debug] QUERY OK source="media_items" db=0.5ms idle=984.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-12 00:00:53Z], 5] 02:50:54.187 [debug] QUERY OK source="media_items" db=0.6ms idle=985.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#git #github #깃허브 #바이브코딩 #ai #코딩\n\n= = =\n\n00:00 인트로 + 할인 이벤트\n39:20 Git을 배워야 하는 이유\n3:27 설치 및 설정 - 윈도우\n13:31 설치 및 설정 - 맥\n21:20 CLI vs. GUI\n24:17 초기설정 & Git 저장소 생성하기\n36:07 Git에게 맡기지 않을 것들\n43:41 변화를 타임캡슐에 담아 묻기\n1:00:10 과거로 돌아가는 세 가지 방법\n1:09:54 나머지 두 방법들\n1:18:23 GUI 및 AI로 진행해보기\n1:25:27 여러 브랜치 만들어보기\n1:40:44 브랜치를 합치는 두 가지 방법\n1:47:47 충돌 해결하기\n1:56:30 GUI로 진행해보기\n2:05:20 GitHub을 사용하는 이유\n2:10:21 전체 강의 듣기 + 할인 이벤트\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림", "c45b5830-6019-4f7a-b854-f0780898c270", false, 7836, false, "GWNkIeVtlpI", "https://www.youtube.com/watch?v=GWNkIeVtlpI", 5, "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림/[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림 [GWNkIeVtlpI].mp4", false, false, 5, [], 97, ~U[2026-06-12 00:00:53Z], ~U[2026-10-18 02:50:54Z], ~U[2026-10-18 02:50:54Z], "#git #github #깃허브 #바이브코딩 #ai #코딩\n\n= = =\n\n00:00 인트로 + 할인 이벤트\n39:20 Git을 배워야 하는 이유\n3:27 설치 및 설정 - 윈도우\n13:31 설치 및 설정 - 맥\n21:20 CLI vs. GUI\n24:17 초기설정 & Git 저장소 생성하기\n36:07 Git에게 맡기지 않을 것들\n43:41 변화를 타임캡슐에 담아 묻기\n1:00:10 과거로 돌아가는 세 가지 방법\n1:09:54 나머지 두 방법들\n1:18:23 GUI 및 AI로 진행해보기\n1:25:27 여러 브랜치 만들어보기\n1:40:44 브랜치를 합치는 두 가지 방법\n1:47:47 충돌 해결하기\n1:56:30 GUI로 진행해보기\n2:05:20 GitHub을 사용하는 이유\n2:10:21 전체 강의 듣기 + 할인 이벤트\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림", 7836, false, "GWNkIeVtlpI", "https://www.youtube.com/watch?v=GWNkIeVtlpI", "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림/[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림 [GWNkIeVtlpI].mp4", false, 5, ~U[2026-06-12 00:00:53Z]] 02:50:54.188 [debug] QUERY OK source="sources" db=0.1ms idle=75.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:54.188 [debug] QUERY OK source="media_profiles" db=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] 02:50:54.188 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [37620] 02:50:54.188 [debug] Current batch of media processed. Will check again in 1000ms 02:50:55.190 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#주식자동매매 #주식자동화 #ai #자동매매프로그램 #ai주식 #주식ai #주식프로그램 \n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html\n\n주식은 타이밍이라는데... 하루 종일 차트만 볼 수도 없고, 내가 점심 먹을 때 급등하면 놓치고, 잠잘 때 급락하면 대응 안 되고... 답답하셨죠? 😫\n이제 코딩 한 줄 짤 줄 몰라도 괜찮습니다!\nAI를 활용해서 내가 원하는 전략 그대로 주식을 사고파는 '나만의 자동매매 프로그램'을 만드는 방법을 공개합니다.\n\n✅ 이런 분들께 추천합니다:\n- 주식 자동매매는 꿈꾸지만 코딩은 하나도 모르시는 분\n- 직장 업무 중에 주가 확인하느라 화장실 자주 가시는 분\n- 나만의 필살기 조건검색식이 있지만 실시간 대응이 안 되는 분\n- 비싼 자동매매 솔루션 외주 비용이 부담스러운 분\n\n더 이상 모니터 앞에 묶여 있지 마세요.\n여러분의 투자 아이디어를 24시간 수행할 든든한 AI 비서를 직접 고용해 보세요! 🤖📈\n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html", "duration" => 214, "filename" => "/downloads/얄팍한 코딩사전/2026-04-23 코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다/코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다 [Og2Pyl6WzMw].mp4", "id" => "Og2Pyl6WzMw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Og2Pyl6WzMw", "playlist_index" => 6, "timestamp" => 1776929112, "title" => "코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다", "upload_date" => "20260423"} 02:50:55.190 [debug] QUERY OK source="sources" db=0.2ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 02:50:55.191 [debug] QUERY OK source="sources" db=0.0ms idle=1002.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:55.191 [debug] QUERY OK source="media_items" db=0.5ms idle=1002.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-23 07:25:12Z], 5] 02:50:55.193 [debug] QUERY OK source="media_items" db=1.0ms idle=1003.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#주식자동매매 #주식자동화 #ai #자동매매프로그램 #ai주식 #주식ai #주식프로그램 \n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html\n\n주식은 타이밍이라는데... 하루 종일 차트만 볼 수도 없고, 내가 점심 먹을 때 급등하면 놓치고, 잠잘 때 급락하면 대응 안 되고... 답답하셨죠? 😫\n이제 코딩 한 줄 짤 줄 몰라도 괜찮습니다!\nAI를 활용해서 내가 원하는 전략 그대로 주식을 사고파는 '나만의 자동매매 프로그램'을 만드는 방법을 공개합니다.\n\n✅ 이런 분들께 추천합니다:\n- 주식 자동매매는 꿈꾸지만 코딩은 하나도 모르시는 분\n- 직장 업무 중에 주가 확인하느라 화장실 자주 가시는 분\n- 나만의 필살기 조건검색식이 있지만 실시간 대응이 안 되는 분\n- 비싼 자동매매 솔루션 외주 비용이 부담스러운 분\n\n더 이상 모니터 앞에 묶여 있지 마세요.\n여러분의 투자 아이디어를 24시간 수행할 든든한 AI 비서를 직접 고용해 보세요! 🤖📈\n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html", "코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다", "c11b6e3a-2503-4f15-8e94-eb82b8741f86", false, 214, false, "Og2Pyl6WzMw", "https://www.youtube.com/watch?v=Og2Pyl6WzMw", 6, "/downloads/얄팍한 코딩사전/2026-04-23 코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다/코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다 [Og2Pyl6WzMw].mp4", false, false, 5, [], 98, ~U[2026-04-23 07:25:12Z], ~U[2026-10-18 02:50:55Z], ~U[2026-10-18 02:50:55Z], "#주식자동매매 #주식자동화 #ai #자동매매프로그램 #ai주식 #주식ai #주식프로그램 \n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html\n\n주식은 타이밍이라는데... 하루 종일 차트만 볼 수도 없고, 내가 점심 먹을 때 급등하면 놓치고, 잠잘 때 급락하면 대응 안 되고... 답답하셨죠? 😫\n이제 코딩 한 줄 짤 줄 몰라도 괜찮습니다!\nAI를 활용해서 내가 원하는 전략 그대로 주식을 사고파는 '나만의 자동매매 프로그램'을 만드는 방법을 공개합니다.\n\n✅ 이런 분들께 추천합니다:\n- 주식 자동매매는 꿈꾸지만 코딩은 하나도 모르시는 분\n- 직장 업무 중에 주가 확인하느라 화장실 자주 가시는 분\n- 나만의 필살기 조건검색식이 있지만 실시간 대응이 안 되는 분\n- 비싼 자동매매 솔루션 외주 비용이 부담스러운 분\n\n더 이상 모니터 앞에 묶여 있지 마세요.\n여러분의 투자 아이디어를 24시간 수행할 든든한 AI 비서를 직접 고용해 보세요! 🤖📈\n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html", "코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다", 214, false, "Og2Pyl6WzMw", "https://www.youtube.com/watch?v=Og2Pyl6WzMw", "/downloads/얄팍한 코딩사전/2026-04-23 코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다/코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다 [Og2Pyl6WzMw].mp4", false, 5, ~U[2026-04-23 07:25:12Z]] 02:50:55.193 [debug] QUERY OK source="sources" db=0.3ms idle=79.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:55.194 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:50:55.194 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [23520] 02:50:55.194 [debug] Current batch of media processed. Will check again in 1000ms 02:50:56.194 [debug] Current batch of media processed. Will check again in 1000ms 02:50:57.196 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#주식자동매매 #주식자동화 #주식분석 #바이브코딩 #ai #인공지능 #주식투자\n\n⬇️ 전체 강의 바로가기 & 할인/이벤트:\nhttps://yalco.notion.site/AI-33bff6b3a35780c3b065c72fdbd87afe\n혹시 위의 페이지에 접속되지 않는다면 브라우저의 쿠키, 캐시를 모두 삭제해보세요!", "duration" => 246, "filename" => "/downloads/얄팍한 코딩사전/2026-04-08 컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템/컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템 [eAzF6fxtSLs].mp4", "id" => "eAzF6fxtSLs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=eAzF6fxtSLs", "playlist_index" => 7, "timestamp" => 1775610982, "title" => "컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템", "upload_date" => "20260408"} 02:50:57.196 [debug] QUERY OK source="sources" db=0.1ms idle=994.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 02:50:57.196 [debug] QUERY OK source="sources" db=0.0ms idle=994.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] 02:50:57.197 [debug] QUERY OK source="media_items" db=0.4ms idle=994.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-08 01:16:22Z], 5] 02:50:57.198 [debug] QUERY OK source="media_items" db=0.6ms idle=995.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#주식자동매매 #주식자동화 #주식분석 #바이브코딩 #ai #인공지능 #주식투자\n\n⬇️ 전체 강의 바로가기 & 할인/이벤트:\nhttps://yalco.notion.site/AI-33bff6b3a35780c3b065c72fdbd87afe\n혹시 위의 페이지에 접속되지 않는다면 브라우저의 쿠키, 캐시를 모두 삭제해보세요!", "컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템", "b6b92132-64b5-4e20-bf91-5e343546fb64", false, 246, false, "eAzF6fxtSLs", "https://www.youtube.com/watch?v=eAzF6fxtSLs", 7, "/downloads/얄팍한 코딩사전/2026-04-08 컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템/컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템 [eAzF6fxtSLs].mp4", false, false, 5, [], 97, ~U[2026-04-08 01:16:22Z], ~U[2026-10-18 02:50:57Z], ~U[2026-10-18 02:50:57Z], "#주식자동매매 #주식자동화 #주식분석 #바이브코딩 #ai #인공지능 #주식투자\n\n⬇️ 전체 강의 바로가기 & 할인/이벤트:\nhttps://yalco.notion.site/AI-33bff6b3a35780c3b065c72fdbd87afe\n혹시 위의 페이지에 접속되지 않는다면 브라우저의 쿠키, 캐시를 모두 삭제해보세요!", "컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템", 246, false, "eAzF6fxtSLs", "https://www.youtube.com/watch?v=eAzF6fxtSLs", "/downloads/얄팍한 코딩사전/2026-04-08 컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템/컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템 [eAzF6fxtSLs].mp4", false, 5, ~U[2026-04-08 01:16:22Z]] 02:50:57.198 [debug] QUERY OK source="sources" db=0.1ms idle=81.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:57.198 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:50:57.198 [debug] QUERY OK source="media_items" db=0.1ms idle=2.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [21485] 02:50:57.199 [debug] FileFollowerServer Handler: Got media attributes: %{"description" => "= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "duration" => 60, "filename" => "/downloads/얄팍한 코딩사전/2026-04-08 [멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰/[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰 [u2tGmIWBn8Y].NA", "id" => "u2tGmIWBn8Y", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=u2tGmIWBn8Y", "playlist_index" => 8, "timestamp" => 1775609746, "title" => "[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰", "upload_date" => "20260408"} 02:50:57.199 [debug] QUERY OK source="sources" db=0.1ms idle=1.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 02:50:57.199 [debug] QUERY OK source="sources" db=0.0ms idle=1.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:57.200 [debug] QUERY OK source="media_items" db=0.4ms idle=1.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-08 00:55:46Z], 5] 02:50:57.201 [debug] QUERY OK source="media_items" db=0.7ms idle=1.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰", "f8d97e6c-5b8a-45a4-80de-d321f10a9bec", false, 60, false, "u2tGmIWBn8Y", "https://www.youtube.com/watch?v=u2tGmIWBn8Y", 8, "/downloads/얄팍한 코딩사전/2026-04-08 [멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰/[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰 [u2tGmIWBn8Y].NA", false, false, 5, [], 97, ~U[2026-04-08 00:55:46Z], ~U[2026-10-18 02:50:57Z], ~U[2026-10-18 02:50:57Z], "= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰", 60, false, "u2tGmIWBn8Y", "https://www.youtube.com/watch?v=u2tGmIWBn8Y", "/downloads/얄팍한 코딩사전/2026-04-08 [멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰/[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰 [u2tGmIWBn8Y].NA", false, 5, ~U[2026-04-08 00:55:46Z]] 02:50:57.201 [debug] QUERY OK source="sources" db=0.1ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:57.201 [debug] QUERY OK source="media_profiles" db=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] 02:50:57.201 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [21487] 02:50:57.201 [info] Kicking off download for media item #21487 (u2tGmIWBn8Y) 02:50:57.203 [debug] QUERY OK source="tasks" db=0.1ms idle=1.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16338, 21487, ~U[2026-10-18 02:50:57Z], ~U[2026-10-18 02:50:57Z]] 02:50:57.203 [debug] Current batch of media processed. Will check again in 1000ms 02:50:57.209 [info] {"args":{"id":21487},"id":16338,"meta":{},"system_time":1792291857209346311,"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"]} 02:50:57.209 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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" = ?) [21487] 02:50:57.210 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:50:57.210 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [5] 02:50:57.210 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:50:57.210 [debug] QUERY OK source="media_items" db=0.2ms idle=7.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [21487] 02:50:57.268 [debug] QUERY OK source="media_metadata" db=0.1ms idle=58.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" = ?) [21487] 02:50:57.268 [debug] QUERY OK source="media_profiles" db=0.1ms idle=58.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] 02:50:57.268 [debug] QUERY OK source="settings" db=0.1ms idle=58.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:57.268 [debug] QUERY OK source="settings" db=0.0ms idle=58.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:57.269 [debug] Running yt-dlp command for action: get_downloadable_status 02:50:57.269 [debug] QUERY OK source="settings" db=0.0ms idle=58.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:57.269 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:57.269 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:57.269 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u2tGmIWBn8Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/64/3d647880c24a5977d35c1264278442aea6d57cfdd47e694c7a5ccc7564e2bc0a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:50:58.204 [debug] FileFollowerServer Handler: Got media attributes: %{"description" => "#바이브코딩 #ai #주식자동매매\n\n= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "duration" => 991, "filename" => "/downloads/얄팍한 코딩사전/2026-03-18 [멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스/[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스 [uUACFhykZYY].NA", "id" => "uUACFhykZYY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uUACFhykZYY", "playlist_index" => 9, "timestamp" => 1773819676, "title" => "[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스", "upload_date" => "20260318"} 02:50:58.204 [debug] QUERY OK source="sources" db=0.2ms idle=935.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 02:50:58.204 [debug] QUERY OK source="sources" db=0.1ms idle=935.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:58.205 [debug] QUERY OK source="media_items" db=0.6ms idle=935.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-18 07:41:16Z], 5] 02:50:58.206 [debug] QUERY OK source="media_items" db=0.5ms idle=936.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#바이브코딩 #ai #주식자동매매\n\n= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스", "66619ddd-a30b-4c50-9553-9c883052c04a", false, 991, false, "uUACFhykZYY", "https://www.youtube.com/watch?v=uUACFhykZYY", 9, "/downloads/얄팍한 코딩사전/2026-03-18 [멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스/[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스 [uUACFhykZYY].NA", false, false, 5, [], 98, ~U[2026-03-18 07:41:16Z], ~U[2026-10-18 02:50:58Z], ~U[2026-10-18 02:50:58Z], "#바이브코딩 #ai #주식자동매매\n\n= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스", 991, false, "uUACFhykZYY", "https://www.youtube.com/watch?v=uUACFhykZYY", "/downloads/얄팍한 코딩사전/2026-03-18 [멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스/[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스 [uUACFhykZYY].NA", false, 5, ~U[2026-03-18 07:41:16Z]] 02:50:58.206 [debug] QUERY OK source="sources" db=0.1ms idle=89.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:58.207 [debug] QUERY OK source="media_profiles" db=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] 02:50:58.207 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [18971] 02:50:58.207 [info] Kicking off download for media item #18971 (uUACFhykZYY) 02:50:58.209 [debug] QUERY OK source="tasks" db=0.1ms idle=1.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16339, 18971, ~U[2026-10-18 02:50:58Z], ~U[2026-10-18 02:50:58Z]] 02:50:58.209 [debug] Current batch of media processed. Will check again in 1000ms 02:50:58.215 [info] {"args":{"id":18971},"id":16339,"meta":{},"system_time":1792291858215552409,"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"]} 02:50:58.216 [debug] QUERY OK source="media_items" db=0.1ms idle=8.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [18971] 02:50:58.216 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:50:58.216 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [5] 02:50:58.216 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.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] 02:50:58.217 [debug] QUERY OK source="media_items" db=0.2ms idle=7.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 [18971] 02:50:58.251 [debug] QUERY OK source="media_metadata" db=0.1ms idle=35.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" = ?) [18971] 02:50:58.251 [debug] QUERY OK source="media_profiles" db=0.2ms idle=35.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] 02:50:58.251 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:58.252 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:58.252 [debug] Running yt-dlp command for action: get_downloadable_status 02:50:58.252 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:58.252 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:58.252 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:58.252 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uUACFhykZYY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5c/bb/5cbb045a23b190b82c858b2af1337d6e0272bf73b1bbb8b6063bf4e6b6dc625d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:50:59.042 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u2tGmIWBn8Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/64/3d647880c24a5977d35c1264278442aea6d57cfdd47e694c7a5ccc7564e2bc0a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] u2tGmIWBn8Y: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:50:59.042 [error] yt-dlp download error for media item #21487: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] u2tGmIWBn8Y: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:50:59.043 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] u2tGmIWBn8Y: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:50:59.043 [info] {"args":{"id":21487},"id":16338,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1833770,"event":"job:stop","queue_time":208793,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:50:59.167 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@yalco-coding --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/얄팍한 코딩사전/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/21/bf/21bf9af2c0b7c0753ca9d19f68d1e1615fe0ffd10af3362ac09b69e057f2203e.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/31/ac/31ac27db44ddce89e8f0e95f0ea7a95cb6e66194ab2aeeab5600c07aaff144e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 02:50:59.168 [debug] Gracefully stopping file follower 02:50:59.168 [debug] QUERY OK source="sources" db=0.3ms idle=915.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 02:50:59.169 [debug] QUERY OK source="sources" db=0.1ms idle=916.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.169 [debug] QUERY OK source="media_items" db=0.4ms idle=125.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 04:15:55Z], 5] 02:50:59.171 [debug] QUERY OK source="media_items" db=1.4ms idle=119.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["리눅스(Linux) 입문, 검은 터미널이 낯설어도 괜찮습니다.\n13만 구독자 IT 유튜버 얄코와 AWS Ubuntu 서버를 직접 만들고, 리눅스 기본 명령어로 파일과 폴더를 다뤄보세요!\n\n이 영상은 「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」에서 입문 레슨들을 모은 약 75분의 무료파트입니다. 코딩 경험이 없는 분도 이해할 수 있도록, 낯선 개념은 쉬운 비유로 풀고 명령을 입력하는 이유와 결과를 함께 설명합니다.\n\n📚 전체 강의 안내\n「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」\n전체 강의는 인프런 공개 준비 중입니다.\n얄코 강의 안내: https://www.yalco.kr/#lectures\n\n🌱 이 무료 영상에서 배우는 내용\n• 리눅스를 배우는 이유와 내 컴퓨터·원격 서버의 차이\n• AWS 준비와 Ubuntu 서버 생성, 브라우저에서 서버 접속하기\n• 첫 명령어로 접속한 컴퓨터와 현재 위치 확인하기\n• 절대 경로·상대 경로를 이해하고 폴더 사이 이동하기\n• 실습 폴더와 파일을 만들고 목록 확인하기\n• cp·mv·rm으로 파일을 복사·이동·삭제하고 작업 대상 확인하기\n\nWindows PC나 Mac에서 따라 할 수 있습니다. 영상을 잠시 멈추고 직접 입력한 뒤, 화면에 나온 결과를 비교해보세요. 이번 영상의 수록 범위는 아래 장면별 목차를 기준으로 합니다.\n\n🚀 전체 강의에서는 여기까지 이어갑니다\n기본 명령어와 파일 관리에서 출발해, 리눅스 서버를 직접 다루고 운영하는 흐름을 단계별로 익힙니다.\n\n• 문서 읽기·편집, 압축·해제, 파일 검색과 파이프로 명령어 연결하기\n• 사용자·그룹·권한, 프로그램 설치, 프로세스·메모리·저장 공간 관리\n• SSH·파일 전송, IP·포트·방화벽과 연결 오류 점검\n• Nginx·systemd로 기초 웹앱을 실행하고 재부팅 후에도 동작하게 만들기\n• Bash 스크립트·cron으로 반복 점검과 백업 자동화\n• 로그로 고장 찾기, 앱 업데이트와 롤백, 서버 밖 백업으로 자료 복구\n\n전체 강의의 웹앱 실습에는 공지와 자료 목록을 보여주는 아주 기초적인 형태의 앱을 사용합니다. 앱 코드는 제공하며, 실행·설정·점검·복구를 통해 리눅스 운영의 기본기를 익히는 데 집중합니다.\n\n👋 이런 분께 추천합니다\n리눅스와 터미널이 처음인 분, 웹 개발·바이브코딩 이후 서버 사용법을 배우고 싶은 분, 복사해서 쓰던 명령어의 의미를 이해하고 싶은 분께 추천합니다.\n\n💡 실습 전 참고\n영상 시청은 무료이며, AWS 클라우드 실습 비용은 별도입니다. 서버를 만들기 전에 현재 요금을 확인하고, 실습 후 사용한 리소스를 정리해주세요. 서버 중지와 삭제는 다릅니다.\n\n⏱️ 장면별 목차\n00:00 - 강의소개\n05:21 - 내 컴퓨터와 서버를 구분하고 AWS 준비하기\n17:19 - Ubuntu 서버 만들고 브라우저로 접속하기\n26:51 - 첫 명령으로 내가 접속한 컴퓨터 확인하기\n34:27 - 리눅스의 위치와 경로 읽기\n47:52 - 내 실습 폴더와 파일 만들기\n59:22 - 복사/이동/삭제를 실수 없이 하기\n1:12:44 - 전체 강의 수강하기\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures\n\n도움이 되셨다면 좋아요와 구독으로 함께해주세요. 리눅스를 처음 배우는 분에게 이 영상도 공유해주세요!\n\n#리눅스 #리눅스강의 #리눅스기초 #Linux #Ubuntu #AWS #리눅스명령어 #서버운영 #얄코", "[업데이트] 리눅스 참교육 - AWS Ubuntu로 Linux 기초부터 서버 운영까지 (무료파트)", "5d9ba98a-450b-45aa-b2e1-420c7d14cf35", false, 4381, false, "7Y1QIldi6OY", "https://www.youtube.com/watch?v=7Y1QIldi6OY", 1, "/downloads/얄팍한 코딩사전/2026-10-15 [업데이트] 리눅스 참교육 - AWS Ubuntu로 Linux 기초부터 서버 운영까지 (무료파트)/[업데이트] 리눅스 참교육 - AWS Ubuntu로 Linux 기초부터 서버 운영까지 (무료파트) [7Y1QIldi6OY].mp4", false, false, 5, [], 98, ~U[2026-10-15 04:15:55Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "리눅스(Linux) 입문, 검은 터미널이 낯설어도 괜찮습니다.\n13만 구독자 IT 유튜버 얄코와 AWS Ubuntu 서버를 직접 만들고, 리눅스 기본 명령어로 파일과 폴더를 다뤄보세요!\n\n이 영상은 「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」에서 입문 레슨들을 모은 약 75분의 무료파트입니다. 코딩 경험이 없는 분도 이해할 수 있도록, 낯선 개념은 쉬운 비유로 풀고 명령을 입력하는 이유와 결과를 함께 설명합니다.\n\n📚 전체 강의 안내\n「리눅스 참교육 - AWS Ubuntu로 기초부터 서버 운영까지」\n전체 강의는 인프런 공개 준비 중입니다.\n얄코 강의 안내: https://www.yalco.kr/#lectures\n\n🌱 이 무료 영상에서 배우는 내용\n• 리눅스를 배우는 이유와 내 컴퓨터·원격 서버의 차이\n• AWS 준비와 Ubuntu 서버 생성, 브라우저에서 서버 접속하기\n• 첫 명령어로 접속한 컴퓨터와 현재 위치 확인하기\n• 절대 경로·상대 경로를 이해하고 폴더 사이 이동하기\n• 실습 폴더와 파일을 만들고 목록 확인하기\n• cp·mv·rm으로 파일을 복사·이동·삭제하고 작업 대상 확인하기\n\nWindows PC나 Mac에서 따라 할 수 있습니다. 영상을 잠시 멈추고 직접 입력한 뒤, 화면에 나온 결과를 비교해보세요. 이번 영상의 수록 범위는 아래 장면별 목차를 기준으로 합니다.\n\n🚀 전체 강의에서는 여기까지 이어갑니다\n기본 명령어와 파일 관리에서 출발해, 리눅스 서버를 직접 다루고 운영하는 흐름을 단계별로 익힙니다.\n\n• 문서 읽기·편집, 압축·해제, 파일 검색과 파이프로 명령어 연결하기\n• 사용자·그룹·권한, 프로그램 설치, 프로세스·메모리·저장 공간 관리\n• SSH·파일 전송, IP·포트·방화벽과 연결 오류 점검\n• Nginx·systemd로 기초 웹앱을 실행하고 재부팅 후에도 동작하게 만들기\n• Bash 스크립트·cron으로 반복 점검과 백업 자동화\n• 로그로 고장 찾기, 앱 업데이트와 롤백, 서버 밖 백업으로 자료 복구\n\n전체 강의의 웹앱 실습에는 공지와 자료 목록을 보여주는 아주 기초적인 형태의 앱을 사용합니다. 앱 코드는 제공하며, 실행·설정·점검·복구를 통해 리눅스 운영의 기본기를 익히는 데 집중합니다.\n\n👋 이런 분께 추천합니다\n리눅스와 터미널이 처음인 분, 웹 개발·바이브코딩 이후 서버 사용법을 배우고 싶은 분, 복사해서 쓰던 명령어의 의미를 이해하고 싶은 분께 추천합니다.\n\n💡 실습 전 참고\n영상 시청은 무료이며, AWS (truncated) 02:50:59.171 [debug] QUERY OK source="sources" db=0.1ms idle=53.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.172 [debug] QUERY OK source="media_items" db=0.4ms idle=3.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-09 02:31:37Z], 5] 02:50:59.173 [debug] QUERY OK source="media_items" db=0.8ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["국내주식부터 미국주식까지, 나만의 자동매매 프로그램을 AI로 직접 만들어보세요.\n코딩을 전혀 몰라도 설치부터 따라갈 수 있는 얄코의 새 강의, 완성 예시와 주요 기능을 소개합니다.\n\n🎉 전체강의 얼리버드 할인중입니다!\n강의 링크: https://inf.run/MhYgo\n\n🎁 기존 얄코 강의 수강자분들을 위한 추가할인: https://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n어려운 코딩은 코덱스(Codex)에게 맡기고, 우리는 필요한 기능을 우리말로 설명합니다. 준비된 요청문을 복사해 따라 만드는 것부터 시작해, 나중에는 내 아이디어와 매매 기준을 프로그램에 추가하는 방법까지 배웁니다.\n\n✅ 이런 프로그램을 만듭니다\n• 국내·미국 주식 계좌 확인, 종목 검색과 순위 조회\n• 관심 종목 수집과 조건검색식 연동\n• 돌파·반등 등 조건에 따른 자동매수\n• 손절·익절, 트레일링 스탑 등 자동매도\n• 분할매매·그리드 등 매수와 매도를 연결한 전략\n• 주문 체결·취소 텔레그램 알림\n• 스마트폰 접속과 온라인 서버 운영\n\n✅ 처음 만드는 분들을 위해\n• 필요한 프로그램 설치와 설정부터 차근차근\n• 실제 투자금 없이 모의투자로 동작 테스트\n• 오류를 AI와 함께 해결하고 이전 상태로 되돌리는 방법\n• 내가 원하는 기능을 추가하며 프로그램 확장하기\n\n이 영상은 전체 강의의 소개 영상입니다. 강의에서는 기능을 하나씩 구현하며 나만의 프로그램을 만들어갑니다. 국내·미국 시장별로 사용할 수 있는 기능에는 차이가 있습니다.\n\n📌 수강 전 확인해 주세요\n완성 프로그램을 판매·제공하는 과정이 아니라, AI를 활용해 직접 만드는 방법을 배우는 강의입니다. 결과물의 디자인과 세부 기능은 달라질 수 있습니다.\n투자 수익을 보장하거나 특정 종목·매매 전략을 추천하지 않습니다. 모의투자와 충분한 점검을 거쳐 실투자를 준비하며, 투자 판단과 책임은 본인에게 있습니다.\n\n👨\u200D💻 개발자 수강 안내\n비개발자와 컴퓨터 사용이 익숙하지 않은 분들을 위한 과정으로, 기초 설명이 반복되며 코덱스의 고급 기능을 중심으로 다루지 않습니다. 개발자 대상 할인·이벤트 안내는 아래에서 확인해 주세요.\nhttps://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures\n\n#주식자동매매 #미국주식 #바이브코딩", "코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩", "7274293b-aabf-4c61-91aa-acdf8752c76d", false, 391, false, "OVAHh_wR09Y", "https://www.youtube.com/watch?v=OVAHh_wR09Y", 2, "/downloads/얄팍한 코딩사전/2026-09-09 코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩/코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩 [OVAHh_wR09Y].mp4", false, false, 5, [], 98, ~U[2026-09-09 02:31:37Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "국내주식부터 미국주식까지, 나만의 자동매매 프로그램을 AI로 직접 만들어보세요.\n코딩을 전혀 몰라도 설치부터 따라갈 수 있는 얄코의 새 강의, 완성 예시와 주요 기능을 소개합니다.\n\n🎉 전체강의 얼리버드 할인중입니다!\n강의 링크: https://inf.run/MhYgo\n\n🎁 기존 얄코 강의 수강자분들을 위한 추가할인: https://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n어려운 코딩은 코덱스(Codex)에게 맡기고, 우리는 필요한 기능을 우리말로 설명합니다. 준비된 요청문을 복사해 따라 만드는 것부터 시작해, 나중에는 내 아이디어와 매매 기준을 프로그램에 추가하는 방법까지 배웁니다.\n\n✅ 이런 프로그램을 만듭니다\n• 국내·미국 주식 계좌 확인, 종목 검색과 순위 조회\n• 관심 종목 수집과 조건검색식 연동\n• 돌파·반등 등 조건에 따른 자동매수\n• 손절·익절, 트레일링 스탑 등 자동매도\n• 분할매매·그리드 등 매수와 매도를 연결한 전략\n• 주문 체결·취소 텔레그램 알림\n• 스마트폰 접속과 온라인 서버 운영\n\n✅ 처음 만드는 분들을 위해\n• 필요한 프로그램 설치와 설정부터 차근차근\n• 실제 투자금 없이 모의투자로 동작 테스트\n• 오류를 AI와 함께 해결하고 이전 상태로 되돌리는 방법\n• 내가 원하는 기능을 추가하며 프로그램 확장하기\n\n이 영상은 전체 강의의 소개 영상입니다. 강의에서는 기능을 하나씩 구현하며 나만의 프로그램을 만들어갑니다. 국내·미국 시장별로 사용할 수 있는 기능에는 차이가 있습니다.\n\n📌 수강 전 확인해 주세요\n완성 프로그램을 판매·제공하는 과정이 아니라, AI를 활용해 직접 만드는 방법을 배우는 강의입니다. 결과물의 디자인과 세부 기능은 달라질 수 있습니다.\n투자 수익을 보장하거나 특정 종목·매매 전략을 추천하지 않습니다. 모의투자와 충분한 점검을 거쳐 실투자를 준비하며, 투자 판단과 책임은 본인에게 있습니다.\n\n👨\u200D💻 개발자 수강 안내\n비개발자와 컴퓨터 사용이 익숙하지 않은 분들을 위한 과정으로, 기초 설명이 반복되며 코덱스의 고급 기능을 중심으로 다루지 않습니다. 개발자 대상 할인·이벤트 안내는 아래에서 확인해 주세요.\nhttps://yalco.notion.site/3d5ff6b3a357800da039d346befd5c9f?source=copy_link\n\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures\n\n#주식자동매매 #미국주식 #바이브코딩", "코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩", 391, false, "OVAHh_wR09Y", "https://www.youtube.com/watch?v=OVAHh_wR09Y", "/downloads/얄팍한 코딩사전/2026-09-09 코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩/코딩 몰라도 만드는 국내·미국 주식 자동매매 | AI 코덱스 바이브코딩 [OVAHh_wR09Y].mp4", false, 5, ~U[2026-09-09 02:31:37Z]] 02:50:59.173 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.174 [debug] QUERY OK source="media_items" db=0.5ms idle=2.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-20 11:28:54Z], 5] 02:50:59.175 [debug] QUERY OK source="media_items" db=1.0ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#코덱스 #codex #바이브코딩 #ai \n\n00:00 전체강의 & 할인 정보\n00:04 코덱스 & 강의 소개\n7:38 설치 및 세팅 - 코덱스 앱\n20:40 설치 및 세팅 - 코드 에디터 확장\n31:43 설치 및 세팅 - 터미널용 코덱스\n41:06 코덱스 플러그인\n55:35 코덱스 자동화\n1:09:54 전체 강좌 수강하기 & 할인쿠폰\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html\n\nCodex는 개발자만을 위한 코딩 도구가 아닙니다.\n에이전트에게 목표와 조건을 명확히 전달하고 작업 과정을 조정·검증할 수 있다면, 코딩 경험이 없어도 웹페이지와 프로그램을 만들고 문서 제작, 자료 조사, 이메일·일정 관리와 반복 업무 자동화까지 맡길 수 있습니다.\n\n전체 강의에서는 다음 내용을 기초부터 차근차근 다룹니다.\n- Windows·macOS에서 Codex 설치 및 설정\n- Codex 앱, VS Code, 터미널 사용법\n- 웹페이지, 게임, 할 일 앱 제작\n- Gmail, Google Calendar, Slack, Notion, 브라우저 활용\n- 뉴스 수집, 메일 작성, 파일 정리 등 반복 업무 자동화\n- 스티어링, 플랜 모드, 골 모드와 멀티 에이전트\n- Codex를 일관되고 안전하게 일하게 만드는 하네스 엔지니어링\n- 나만의 반복 업무 기능과 외부 서비스 연결 도구 제작\n- Git, Diff, Review를 활용한 변경사항 관리\n- Codex 클라우드·웹, 루프 엔지니어링\n- Hooks 등 고급 기능\n\n코딩 경험이 없는 분도 따라올 수 있도록 어려운 개념은 얄코답게 친숙한 비유와 실습으로 쉽게 설명합니다. \n개발자에게는 실제 프로젝트의 구현, 테스트, 리뷰와 에이전트 작업 환경 설계까지 이어지는 심화 내용을 제공합니다.\n\n특히 현재 기능만 알려드리는 데서 끝나지 않습니다. 빠르게 업데이트되는 Codex의 새로운 기능과 변경사항을 OpenAI 공식 가이드에서 직접 확인하고 스스로 학습하는 방법까지 배웁니다.\n\n이런 분께 추천합니다.\n코딩 없이 웹페이지나 작은 프로그램을 만들고 싶은 분\n이메일, 일정, 자료 조사 등 반복 업무를 자동화하고 싶은 분\n바이브 코딩을 가장 쉬운 단계부터 배우고 싶은 분\nCodex를 개발·테스트·리뷰에 활용하고 싶은 개발자\nAI 에이전트를 정확하고 안전하게 다루는 방법을 배우고 싶은 분\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html", "코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지", "247e7895-a97b-493d-97d1-482011c44fd3", false, 4210, false, "Bzdcg70ivrs", "https://www.youtube.com/watch?v=Bzdcg70ivrs", 3, "/downloads/얄팍한 코딩사전/2026-07-20 코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지/코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지 [Bzdcg70ivrs].mp4", false, false, 5, [], 98, ~U[2026-07-20 11:28:54Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "#코덱스 #codex #바이브코딩 #ai \n\n00:00 전체강의 & 할인 정보\n00:04 코덱스 & 강의 소개\n7:38 설치 및 세팅 - 코덱스 앱\n20:40 설치 및 세팅 - 코드 에디터 확장\n31:43 설치 및 세팅 - 터미널용 코덱스\n41:06 코덱스 플러그인\n55:35 코덱스 자동화\n1:09:54 전체 강좌 수강하기 & 할인쿠폰\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html\n\nCodex는 개발자만을 위한 코딩 도구가 아닙니다.\n에이전트에게 목표와 조건을 명확히 전달하고 작업 과정을 조정·검증할 수 있다면, 코딩 경험이 없어도 웹페이지와 프로그램을 만들고 문서 제작, 자료 조사, 이메일·일정 관리와 반복 업무 자동화까지 맡길 수 있습니다.\n\n전체 강의에서는 다음 내용을 기초부터 차근차근 다룹니다.\n- Windows·macOS에서 Codex 설치 및 설정\n- Codex 앱, VS Code, 터미널 사용법\n- 웹페이지, 게임, 할 일 앱 제작\n- Gmail, Google Calendar, Slack, Notion, 브라우저 활용\n- 뉴스 수집, 메일 작성, 파일 정리 등 반복 업무 자동화\n- 스티어링, 플랜 모드, 골 모드와 멀티 에이전트\n- Codex를 일관되고 안전하게 일하게 만드는 하네스 엔지니어링\n- 나만의 반복 업무 기능과 외부 서비스 연결 도구 제작\n- Git, Diff, Review를 활용한 변경사항 관리\n- Codex 클라우드·웹, 루프 엔지니어링\n- Hooks 등 고급 기능\n\n코딩 경험이 없는 분도 따라올 수 있도록 어려운 개념은 얄코답게 친숙한 비유와 실습으로 쉽게 설명합니다. \n개발자에게는 실제 프로젝트의 구현, 테스트, 리뷰와 에이전트 작업 환경 설계까지 이어지는 심화 내용을 제공합니다.\n\n특히 현재 기능만 알려드리는 데서 끝나지 않습니다. 빠르게 업데이트되는 Codex의 새로운 기능과 변경사항을 OpenAI 공식 가이드에서 직접 확인하고 스스로 학습하는 방법까지 배웁니다.\n\n이런 분께 추천합니다.\n코딩 없이 웹페이지나 작은 프로그램을 만들고 싶은 분\n이메일, 일정, 자료 조사 등 반복 업무를 자동화하고 싶은 분\n바이브 코딩을 가장 쉬운 단계부터 배우고 싶은 분\nCodex를 개발·테스트·리뷰에 활용하고 싶은 개발자\nAI 에이전트를 정확하고 안전하게 다루는 방법을 배우고 싶은 분\n\n강의 링크: https://inf.run/8pi8z\n🎁 댓글 남기고 반값에 수강하기: https://stock.yalco.kr/disc-codex.html", "코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지", 4210, false, "Bzdcg70ivrs", "https://www.youtube.com/watch?v=Bzdcg70ivrs", "/downloads/얄팍한 코딩사전/2026-07-20 코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지/코덱스 참교육 - Codex 업무 자동화부터 바이브 코딩까지 [Bzdcg70ivrs].mp4", false, 5, ~U[2026-07-20 11:28:54Z]] 02:50:59.176 [debug] QUERY OK source="sources" db=0.1ms idle=3.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.176 [debug] QUERY OK source="media_items" db=0.3ms idle=2.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-12 00:00:56Z], 5] 02:50:59.237 [debug] QUERY OK source="media_items" db=60.6ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#바이브코딩 #ai코딩 #html #css #자바스크립트 #리액트 #타입스크립트\n\n00:00 인트로 + 할인 이벤트\n00:45 [HTML CSS] 강의를 듣는 방법\n06:01 [HTML CSS] 수강을 위한 환경 세팅\n15:35 [HTML CSS] HTML, CSS, JavaScript가 뭔가요?\n21:39 [HTML CSS] 제목과 본문\n42:28 [HTML CSS] 종류와 중요도에 따른 태그\n52:08 [HTML CSS] 인용된 컨텐츠\n1:03:48 [HTML CSS] 나열되는 요소들\n1:12:33 [HTML CSS] 이미지 넣기\n1:24:25 [자바스크립트] 강의를 듣는 방법\n1:31:10 [자바스크립트] 수강을 위한 환경 세팅\n1:44:31: [자바스크립트] 콘솔 활용하기\n1:55:48 [자바스크립트] 주석과 세미콜론\n2:03:05 [자바스크립트] 변수와 상수\n2:21:10 [자바스크립트] 자료형\n2:31:43 [자바스크립트] 자료형과 정적, 동적 타입\n2:36:29 [자바스크립트] 문자열\n2:45:43 [자바스크립트] 문자열 연산자\n2:59:08 [자바스크립트] 숫자와 관련 연산자\n3:10:10 [리액트] 리액트 소개\n3:16:19 [리액트] 실습을 위한 환경설정\n3:22:01 [리액트] 예제페이지 활용 & 질문 방법\n3:23:49 [리액트] 프로젝트 생성하기\n3:32:20 [리액트] 프로젝트 명령어 생성하기\n3:39:26 [리액트] 리액트 프로젝트 살펴보기\n3:47:35 [리액트] 컴포넌트 기초\n3:56:15 [리액트] JSX 문법 기초\n4:03:43 [리액트] 조건부 렌더링과 리스트 렌더링\n4:14:08 [리액트] JSX 속성과 스타일링\n4:25:13 [타입스크립트] 타입스크립트 소개\n4:31:01 [타입스크립트] Node.js 설치\n4:38:11 [타입스크립트] 타입스크립트 설치하고 사용해보기\n4:46:44 [타입스크립트] 타입 표기와 기본 자료형\n4:54:33 [타입스크립트] any 타입과 unkown 타입\n5:03:54 [타입스크립트] null, undefined, void, never\n5:13:11: [타입스크립트] 배열과 튜플, 객체 기초\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 전체 강의, 바이브코딩 등 다른 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지", "3e994eb1-ea09-494f-b2b0-6deb87f70404", false, 19602, false, "xrQwDWZnMLQ", "https://www.youtube.com/watch?v=xrQwDWZnMLQ", 4, "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지/[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지 [xrQwDWZnMLQ].mp4", false, false, 5, [], 97, ~U[2026-06-12 00:00:56Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "#바이브코딩 #ai코딩 #html #css #자바스크립트 #리액트 #타입스크립트\n\n00:00 인트로 + 할인 이벤트\n00:45 [HTML CSS] 강의를 듣는 방법\n06:01 [HTML CSS] 수강을 위한 환경 세팅\n15:35 [HTML CSS] HTML, CSS, JavaScript가 뭔가요?\n21:39 [HTML CSS] 제목과 본문\n42:28 [HTML CSS] 종류와 중요도에 따른 태그\n52:08 [HTML CSS] 인용된 컨텐츠\n1:03:48 [HTML CSS] 나열되는 요소들\n1:12:33 [HTML CSS] 이미지 넣기\n1:24:25 [자바스크립트] 강의를 듣는 방법\n1:31:10 [자바스크립트] 수강을 위한 환경 세팅\n1:44:31: [자바스크립트] 콘솔 활용하기\n1:55:48 [자바스크립트] 주석과 세미콜론\n2:03:05 [자바스크립트] 변수와 상수\n2:21:10 [자바스크립트] 자료형\n2:31:43 [자바스크립트] 자료형과 정적, 동적 타입\n2:36:29 [자바스크립트] 문자열\n2:45:43 [자바스크립트] 문자열 연산자\n2:59:08 [자바스크립트] 숫자와 관련 연산자\n3:10:10 [리액트] 리액트 소개\n3:16:19 [리액트] 실습을 위한 환경설정\n3:22:01 [리액트] 예제페이지 활용 & 질문 방법\n3:23:49 [리액트] 프로젝트 생성하기\n3:32:20 [리액트] 프로젝트 명령어 생성하기\n3:39:26 [리액트] 리액트 프로젝트 살펴보기\n3:47:35 [리액트] 컴포넌트 기초\n3:56:15 [리액트] JSX 문법 기초\n4:03:43 [리액트] 조건부 렌더링과 리스트 렌더링\n4:14:08 [리액트] JSX 속성과 스타일링\n4:25:13 [타입스크립트] 타입스크립트 소개\n4:31:01 [타입스크립트] Node.js 설치\n4:38:11 [타입스크립트] 타입스크립트 설치하고 사용해보기\n4:46:44 [타입스크립트] 타입 표기와 기본 자료형\n4:54:33 [타입스크립트] any 타입과 unkown 타입\n5:03:54 [타입스크립트] null, undefined, void, never\n5:13:11: [타입스크립트] 배열과 튜플, 객체 기초\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 전체 강의, 바이브코딩 등 다른 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지", 19602, false, "xrQwDWZnMLQ", "https://www.youtube.com/watch?v=xrQwDWZnMLQ", "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지/[🎁 AI 강의 할인중] 바이브코딩을 위한 웹개발 필수 코스 - HTML, CSS, 자바스크립트, 리액트, 타입스크립트까지 [xrQwDWZnMLQ].mp4", false, 5, ~U[2026-06-12 00:00:56Z]] 02:50:59.238 [debug] QUERY OK source="sources" db=0.2ms idle=63.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.239 [debug] QUERY OK source="media_items" db=0.4ms idle=62.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-12 00:00:53Z], 5] 02:50:59.283 [debug] QUERY OK source="media_items" db=44.3ms idle=63.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#git #github #깃허브 #바이브코딩 #ai #코딩\n\n= = =\n\n00:00 인트로 + 할인 이벤트\n39:20 Git을 배워야 하는 이유\n3:27 설치 및 설정 - 윈도우\n13:31 설치 및 설정 - 맥\n21:20 CLI vs. GUI\n24:17 초기설정 & Git 저장소 생성하기\n36:07 Git에게 맡기지 않을 것들\n43:41 변화를 타임캡슐에 담아 묻기\n1:00:10 과거로 돌아가는 세 가지 방법\n1:09:54 나머지 두 방법들\n1:18:23 GUI 및 AI로 진행해보기\n1:25:27 여러 브랜치 만들어보기\n1:40:44 브랜치를 합치는 두 가지 방법\n1:47:47 충돌 해결하기\n1:56:30 GUI로 진행해보기\n2:05:20 GitHub을 사용하는 이유\n2:10:21 전체 강의 듣기 + 할인 이벤트\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림", "4f8bbf3c-9c2c-4ec6-8797-5996109c8f1a", false, 7836, false, "GWNkIeVtlpI", "https://www.youtube.com/watch?v=GWNkIeVtlpI", 5, "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림/[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림 [GWNkIeVtlpI].mp4", false, false, 5, [], 97, ~U[2026-06-12 00:00:53Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "#git #github #깃허브 #바이브코딩 #ai #코딩\n\n= = =\n\n00:00 인트로 + 할인 이벤트\n39:20 Git을 배워야 하는 이유\n3:27 설치 및 설정 - 윈도우\n13:31 설치 및 설정 - 맥\n21:20 CLI vs. GUI\n24:17 초기설정 & Git 저장소 생성하기\n36:07 Git에게 맡기지 않을 것들\n43:41 변화를 타임캡슐에 담아 묻기\n1:00:10 과거로 돌아가는 세 가지 방법\n1:09:54 나머지 두 방법들\n1:18:23 GUI 및 AI로 진행해보기\n1:25:27 여러 브랜치 만들어보기\n1:40:44 브랜치를 합치는 두 가지 방법\n1:47:47 충돌 해결하기\n1:56:30 GUI로 진행해보기\n2:05:20 GitHub을 사용하는 이유\n2:10:21 전체 강의 듣기 + 할인 이벤트\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures \n\n🎁 얄코 강의들 할인가에 수강하기:\nhttps://stock.yalco.kr/yalco-lec-disc.html", "[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림", 7836, false, "GWNkIeVtlpI", "https://www.youtube.com/watch?v=GWNkIeVtlpI", "/downloads/얄팍한 코딩사전/2026-06-12 [🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림/[🎁 AI 강의 할인받기] 바이브코딩 시대에도 꼭 알아야 하는 Git & GitHub! 가장 쉽게 알려드림 [GWNkIeVtlpI].mp4", false, 5, ~U[2026-06-12 00:00:53Z]] 02:50:59.284 [debug] QUERY OK source="sources" db=0.2ms idle=107.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.285 [debug] QUERY OK source="media_items" db=0.5ms idle=47.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-23 07:25:12Z], 5] 02:50:59.286 [debug] QUERY OK source="media_items" db=0.7ms idle=46.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#주식자동매매 #주식자동화 #ai #자동매매프로그램 #ai주식 #주식ai #주식프로그램 \n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html\n\n주식은 타이밍이라는데... 하루 종일 차트만 볼 수도 없고, 내가 점심 먹을 때 급등하면 놓치고, 잠잘 때 급락하면 대응 안 되고... 답답하셨죠? 😫\n이제 코딩 한 줄 짤 줄 몰라도 괜찮습니다!\nAI를 활용해서 내가 원하는 전략 그대로 주식을 사고파는 '나만의 자동매매 프로그램'을 만드는 방법을 공개합니다.\n\n✅ 이런 분들께 추천합니다:\n- 주식 자동매매는 꿈꾸지만 코딩은 하나도 모르시는 분\n- 직장 업무 중에 주가 확인하느라 화장실 자주 가시는 분\n- 나만의 필살기 조건검색식이 있지만 실시간 대응이 안 되는 분\n- 비싼 자동매매 솔루션 외주 비용이 부담스러운 분\n\n더 이상 모니터 앞에 묶여 있지 마세요.\n여러분의 투자 아이디어를 24시간 수행할 든든한 AI 비서를 직접 고용해 보세요! 🤖📈\n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html", "코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다", "643a7e2a-514c-4dee-8987-597decf413b5", false, 214, false, "Og2Pyl6WzMw", "https://www.youtube.com/watch?v=Og2Pyl6WzMw", 6, "/downloads/얄팍한 코딩사전/2026-04-23 코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다/코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다 [Og2Pyl6WzMw].mp4", false, false, 5, [], 98, ~U[2026-04-23 07:25:12Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "#주식자동매매 #주식자동화 #ai #자동매매프로그램 #ai주식 #주식ai #주식프로그램 \n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html\n\n주식은 타이밍이라는데... 하루 종일 차트만 볼 수도 없고, 내가 점심 먹을 때 급등하면 놓치고, 잠잘 때 급락하면 대응 안 되고... 답답하셨죠? 😫\n이제 코딩 한 줄 짤 줄 몰라도 괜찮습니다!\nAI를 활용해서 내가 원하는 전략 그대로 주식을 사고파는 '나만의 자동매매 프로그램'을 만드는 방법을 공개합니다.\n\n✅ 이런 분들께 추천합니다:\n- 주식 자동매매는 꿈꾸지만 코딩은 하나도 모르시는 분\n- 직장 업무 중에 주가 확인하느라 화장실 자주 가시는 분\n- 나만의 필살기 조건검색식이 있지만 실시간 대응이 안 되는 분\n- 비싼 자동매매 솔루션 외주 비용이 부담스러운 분\n\n더 이상 모니터 앞에 묶여 있지 마세요.\n여러분의 투자 아이디어를 24시간 수행할 든든한 AI 비서를 직접 고용해 보세요! 🤖📈\n\n컴퓨터가 어려우신 분들은 수강 중 막히면 ☎전화로 도와드립니다.\n강의 보러가기: https://inf.run/QLcWf\n5만원 할인받기: https://stock.yalco.kr/disc-ai-stock.html", "코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다", 214, false, "Og2Pyl6WzMw", "https://www.youtube.com/watch?v=Og2Pyl6WzMw", "/downloads/얄팍한 코딩사전/2026-04-23 코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다/코딩 몰라도, 컴맹도 가능! AI로 나만의 주식 자동매매 프로그램 만들기 - 어디서든 톡으로 일 시킬 수 있는 AI 주식 비서 + 컴퓨터 어려우신 분들 ☎️ 전화로 도와드립니다 [Og2Pyl6WzMw].mp4", false, 5, ~U[2026-04-23 07:25:12Z]] 02:50:59.286 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.287 [debug] QUERY OK source="media_items" db=0.4ms idle=3.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-08 01:16:22Z], 5] 02:50:59.330 [debug] QUERY OK source="media_items" db=42.9ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#주식자동매매 #주식자동화 #주식분석 #바이브코딩 #ai #인공지능 #주식투자\n\n⬇️ 전체 강의 바로가기 & 할인/이벤트:\nhttps://yalco.notion.site/AI-33bff6b3a35780c3b065c72fdbd87afe\n혹시 위의 페이지에 접속되지 않는다면 브라우저의 쿠키, 캐시를 모두 삭제해보세요!", "컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템", "8d87c6d9-3e47-4e75-aab2-8c7dd1fe9830", false, 246, false, "eAzF6fxtSLs", "https://www.youtube.com/watch?v=eAzF6fxtSLs", 7, "/downloads/얄팍한 코딩사전/2026-04-08 컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템/컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템 [eAzF6fxtSLs].mp4", false, false, 5, [], 97, ~U[2026-04-08 01:16:22Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "#주식자동매매 #주식자동화 #주식분석 #바이브코딩 #ai #인공지능 #주식투자\n\n⬇️ 전체 강의 바로가기 & 할인/이벤트:\nhttps://yalco.notion.site/AI-33bff6b3a35780c3b065c72fdbd87afe\n혹시 위의 페이지에 접속되지 않는다면 브라우저의 쿠키, 캐시를 모두 삭제해보세요!", "컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템", 246, false, "eAzF6fxtSLs", "https://www.youtube.com/watch?v=eAzF6fxtSLs", "/downloads/얄팍한 코딩사전/2026-04-08 컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템/컴맹도 따라하는 주식 바이브코딩 - AI로 만드는 주식 자동매매 시스템 [eAzF6fxtSLs].mp4", false, 5, ~U[2026-04-08 01:16:22Z]] 02:50:59.331 [debug] QUERY OK source="sources" db=0.2ms idle=45.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.331 [debug] QUERY OK source="media_items" db=0.5ms idle=45.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-08 00:55:46Z], 5] 02:50:59.332 [debug] QUERY OK source="media_items" db=0.4ms idle=45.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰", "03d1ed99-6071-45b8-b4b5-9eb14836c6ec", false, 60, false, "u2tGmIWBn8Y", "https://www.youtube.com/watch?v=u2tGmIWBn8Y", 8, "/downloads/얄팍한 코딩사전/2026-04-08 [멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰/[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰 [u2tGmIWBn8Y].NA", false, false, 5, [], 97, ~U[2026-04-08 00:55:46Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰", 60, false, "u2tGmIWBn8Y", "https://www.youtube.com/watch?v=u2tGmIWBn8Y", "/downloads/얄팍한 코딩사전/2026-04-08 [멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰/[멤버십] AI로 만드는 주식 자동매매 시스템 할인쿠폰 [u2tGmIWBn8Y].NA", false, 5, ~U[2026-04-08 00:55:46Z]] 02:50:59.332 [debug] QUERY OK source="sources" db=0.1ms idle=45.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.333 [debug] QUERY OK source="media_items" db=0.3ms idle=2.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-18 07:41:16Z], 5] 02:50:59.393 [debug] QUERY OK source="media_items" db=59.6ms idle=2.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#바이브코딩 #ai #주식자동매매\n\n= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스", "3d5bd21a-2592-4b9a-a070-f81ee80b9efd", false, 991, false, "uUACFhykZYY", "https://www.youtube.com/watch?v=uUACFhykZYY", 9, "/downloads/얄팍한 코딩사전/2026-03-18 [멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스/[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스 [uUACFhykZYY].NA", false, false, 5, [], 98, ~U[2026-03-18 07:41:16Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "#바이브코딩 #ai #주식자동매매\n\n= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스", 991, false, "uUACFhykZYY", "https://www.youtube.com/watch?v=uUACFhykZYY", "/downloads/얄팍한 코딩사전/2026-03-18 [멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스/[멤버십] AI로 만드는 주식 자동매매 시스템 10 - 🌟 중요 레슨 : 스탑로스 [uUACFhykZYY].NA", false, 5, ~U[2026-03-18 07:41:16Z]] 02:50:59.393 [debug] QUERY OK source="sources" db=0.2ms idle=61.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.394 [debug] QUERY OK source="media_items" db=0.5ms idle=61.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-13 05:36:04Z], 5] 02:50:59.395 [debug] QUERY OK source="media_items" db=0.4ms idle=62.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#ai #주식자동매매 #바이브코딩\n\n= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 09 - 기본 설정, 예약, 도움말", "25312e81-f257-4d7e-8204-7e6456b77752", false, 585, false, "heqADNCGaa4", "https://www.youtube.com/watch?v=heqADNCGaa4", 10, "/downloads/얄팍한 코딩사전/2026-03-13 [멤버십] AI로 만드는 주식 자동매매 시스템 09 - 기본 설정, 예약, 도움말/[멤버십] AI로 만드는 주식 자동매매 시스템 09 - 기본 설정, 예약, 도움말 [heqADNCGaa4].NA", false, false, 5, [], 98, ~U[2026-03-13 05:36:04Z], ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], "#ai #주식자동매매 #바이브코딩\n\n= = =\n\n🎁 얄코의 모든 강의 30% 할인쿠폰 (모든분께!)\nhttps://yalco.notion.site/176ff6b3a357808eb3def28166329023?source=copy_link\n\n🏠 얄코사이트: https://www.yalco.kr\n📖 얄코 도서: https://www.yalco.kr/book/\n🧑\u200D🏫 얄코 강의: https://www.yalco.kr/#lectures", "[멤버십] AI로 만드는 주식 자동매매 시스템 09 - 기본 설정, 예약, 도움말", 585, false, "heqADNCGaa4", "https://www.youtube.com/watch?v=heqADNCGaa4", "/downloads/얄팍한 코딩사전/2026-03-13 [멤버십] AI로 만드는 주식 자동매매 시스템 09 - 기본 설정, 예약, 도움말/[멤버십] AI로 만드는 주식 자동매매 시스템 09 - 기본 설정, 예약, 도움말 [heqADNCGaa4].NA", false, 5, ~U[2026-03-13 05:36:04Z]] 02:50:59.395 [debug] QUERY OK source="sources" db=0.1ms idle=62.3ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z], 5] 02:50:59.396 [debug] QUERY OK source="media_items" db=0.5ms idle=2.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 02:50:59.398 [debug] QUERY OK source="tasks" db=0.1ms idle=2.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16340, 14550, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.440 [debug] QUERY OK source="tasks" db=41.0ms idle=1.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16341, 14551, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.441 [debug] QUERY OK source="tasks" db=0.1ms idle=42.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16342, 14552, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.442 [debug] QUERY OK source="tasks" db=0.1ms idle=1.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16343, 14553, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.443 [debug] QUERY OK source="tasks" db=0.1ms idle=1.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16344, 14554, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.486 [debug] QUERY OK source="tasks" db=41.1ms idle=1.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16345, 14555, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.488 [debug] QUERY OK source="tasks" db=0.1ms idle=42.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16346, 14556, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.489 [debug] QUERY OK source="tasks" db=0.1ms idle=1.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16347, 14557, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.489 [debug] QUERY OK source="tasks" db=0.0ms idle=0.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16348, 14558, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.491 [debug] QUERY OK source="tasks" db=0.1ms idle=1.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16349, 14560, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.492 [debug] QUERY OK source="tasks" db=0.1ms idle=1.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16350, 14580, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.493 [debug] QUERY OK source="tasks" db=0.1ms idle=1.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16351, 14581, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.494 [debug] QUERY OK source="tasks" db=0.2ms idle=1.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16352, 14583, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.495 [debug] QUERY OK source="tasks" db=0.0ms idle=1.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16353, 17145, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.496 [debug] QUERY OK source="tasks" db=0.1ms idle=1.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16354, 17834, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.497 [debug] QUERY OK source="tasks" db=0.0ms idle=1.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16355, 17975, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.498 [debug] QUERY OK source="tasks" db=0.2ms idle=1.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16356, 18260, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.504 [debug] QUERY OK source="tasks" db=0.2ms idle=1.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16357, 21487, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.505 [debug] QUERY OK source="media_items" db=0.5ms idle=1.2ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 02:50:59.506 [debug] QUERY OK source="media_items" db=0.2ms idle=1.5ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 02:50:59.508 [info] {"args":{"id":14550},"id":16340,"meta":{},"system_time":1792291859508289958,"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"]} 02:50:59.508 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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" = ?) [14550] 02:50:59.509 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:50:59.509 [debug] QUERY OK source="sources" db=0.2ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.509 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 02:50:59.510 [debug] QUERY OK source="tasks" db=0.3ms idle=1.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16358, 5, ~U[2026-10-18 02:50:59Z], ~U[2026-10-18 02:50:59Z]] 02:50:59.510 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [14550] 02:50:59.510 [info] {"args":{"id":5},"id":16319,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":16403402,"event":"job:stop","queue_time":738928,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 02:50:59.528 [debug] QUERY OK source="media_metadata" db=0.1ms idle=18.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" = ?) [14550] 02:50:59.529 [debug] QUERY OK source="media_profiles" db=0.1ms idle=18.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] 02:50:59.529 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:59.529 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:59.529 [debug] Running yt-dlp command for action: get_downloadable_status 02:50:59.530 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:59.530 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:59.530 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:59.530 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Kj7HmQpROIg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/db/51/db5117849114982b3884ae74d27ff41c9c6f5b140a142673eda7b4059f6ca6ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:50:59.968 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uUACFhykZYY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5c/bb/5cbb045a23b190b82c858b2af1337d6e0272bf73b1bbb8b6063bf4e6b6dc625d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] uUACFhykZYY: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:50:59.969 [error] yt-dlp download error for media item #18971: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] uUACFhykZYY: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:50:59.969 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] uUACFhykZYY: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:50:59.969 [info] {"args":{"id":18971},"id":16339,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1753668,"event":"job:stop","queue_time":214880,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:50:59.975 [info] {"args":{"id":14551},"id":16341,"meta":{},"system_time":1792291859975754022,"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"]} 02:50:59.976 [debug] QUERY OK source="media_items" db=0.1ms idle=445.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" = ?) [14551] 02:50:59.976 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:50:59.976 [debug] QUERY OK source="sources" db=0.1ms idle=446.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:50:59.977 [debug] QUERY OK source="media_profiles" db=0.1ms idle=446.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] 02:50:59.977 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [14551] 02:50:59.978 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [14551] 02:50:59.978 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:50:59.978 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:50:59.978 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:50:59.978 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:00.031 [debug] QUERY OK source="settings" db=0.1ms idle=53.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:00.031 [debug] QUERY OK source="settings" db=0.2ms idle=53.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:00.031 [debug] QUERY OK source="settings" db=0.1ms idle=53.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:00.031 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BhHrQpa6Jj4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/17/9f/179fb47b91a26f67d969d2eeba5e770229cf0d470d751f5e01aa84cb6f2a9536.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:00.311 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:51:01.144 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Kj7HmQpROIg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/db/51/db5117849114982b3884ae74d27ff41c9c6f5b140a142673eda7b4059f6ca6ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] Kj7HmQpROIg: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:01.145 [error] yt-dlp download error for media item #14550: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] Kj7HmQpROIg: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:01.145 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] Kj7HmQpROIg: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:01.145 [info] {"args":{"id":14550},"id":16340,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1637146,"event":"job:stop","queue_time":403801,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:01.152 [info] {"args":{"id":14552},"id":16342,"meta":{},"system_time":1792291861152790700,"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"]} 02:51:01.153 [debug] QUERY OK source="media_items" db=0.2ms idle=1033.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" = ?) [14552] 02:51:01.153 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:01.153 [debug] QUERY OK source="sources" db=0.1ms idle=842.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:01.154 [debug] QUERY OK source="media_profiles" db=0.1ms idle=33.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] 02:51:01.154 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [14552] 02:51:01.202 [debug] QUERY OK source="media_metadata" db=0.1ms idle=49.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [14552] 02:51:01.203 [debug] QUERY OK source="media_profiles" db=0.0ms idle=49.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] 02:51:01.203 [debug] QUERY OK source="settings" db=0.0ms idle=49.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:01.203 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:01.203 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:01.272 [debug] QUERY OK source="settings" db=0.2ms idle=117.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:01.272 [debug] QUERY OK source="settings" db=0.0ms idle=69.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:01.272 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:01.272 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nx6bOODglVA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/12/4d/124d1e2d1a26067e50a0966b83c66a56763dab5d6fd0582466ac5e4dfdbadb8a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:01.625 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BhHrQpa6Jj4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/17/9f/179fb47b91a26f67d969d2eeba5e770229cf0d470d751f5e01aa84cb6f2a9536.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] BhHrQpa6Jj4: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:01.625 [error] yt-dlp download error for media item #14551: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] BhHrQpa6Jj4: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:01.626 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] BhHrQpa6Jj4: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:01.626 [info] {"args":{"id":14551},"id":16341,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1650484,"event":"job:stop","queue_time":974873,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:01.633 [info] {"args":{"id":14553},"id":16343,"meta":{},"system_time":1792291861633753706,"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"]} 02:51:01.634 [debug] QUERY OK source="media_items" db=0.1ms idle=361.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [14553] 02:51:01.634 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:01.634 [debug] QUERY OK source="sources" db=0.1ms idle=361.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:01.635 [debug] QUERY OK source="media_profiles" db=0.1ms idle=362.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] 02:51:01.635 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [14553] 02:51:01.684 [debug] QUERY OK source="media_metadata" db=0.2ms idle=50.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" = ?) [14553] 02:51:01.684 [debug] QUERY OK source="media_profiles" db=0.2ms idle=50.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] 02:51:01.684 [debug] QUERY OK source="settings" db=0.1ms idle=50.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:01.685 [debug] QUERY OK source="settings" db=0.0ms idle=49.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:01.685 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:01.760 [debug] QUERY OK source="settings" db=0.2ms idle=125.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:01.761 [debug] QUERY OK source="settings" db=0.4ms idle=77.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:01.761 [debug] QUERY OK source="settings" db=0.1ms idle=77.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:01.761 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ag4rwEGkS8w --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/85/f1/85f1df58a46ad562e9de59a877d9aa25f2bd4de31a459c3eead0f07b5b3d1a3b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:02.995 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nx6bOODglVA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/12/4d/124d1e2d1a26067e50a0966b83c66a56763dab5d6fd0582466ac5e4dfdbadb8a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] nx6bOODglVA: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:02.996 [error] yt-dlp download error for media item #14552: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] nx6bOODglVA: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:02.996 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] nx6bOODglVA: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:02.996 [info] {"args":{"id":14552},"id":16342,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1843575,"event":"job:stop","queue_time":2151838,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:03.003 [info] {"args":{"id":14554},"id":16344,"meta":{},"system_time":1792291863003557620,"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"]} 02:51:03.004 [debug] QUERY OK source="media_items" db=0.2ms idle=1242.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" = ?) [14554] 02:51:03.004 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:03.004 [debug] QUERY OK source="sources" db=0.1ms idle=1242.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:03.004 [debug] QUERY OK source="media_profiles" db=0.1ms idle=882.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] 02:51:03.005 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [14554] 02:51:03.045 [debug] QUERY OK source="media_metadata" db=0.2ms idle=41.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" = ?) [14554] 02:51:03.045 [debug] QUERY OK source="media_profiles" db=0.1ms idle=41.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] 02:51:03.045 [debug] QUERY OK source="settings" db=0.0ms idle=41.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:03.045 [debug] QUERY OK source="settings" db=0.0ms idle=41.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:03.046 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:03.046 [debug] QUERY OK source="settings" db=0.0ms idle=41.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:03.047 [debug] QUERY OK source="settings" db=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 [] 02:51:03.047 [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 [] 02:51:03.047 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CtFZUJtRJT4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/ab/b1abcdff7e8e065c1609c79a56ab2cf4e0fa49210d16ef72aad4a346cc128097.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:03.380 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ag4rwEGkS8w --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/85/f1/85f1df58a46ad562e9de59a877d9aa25f2bd4de31a459c3eead0f07b5b3d1a3b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] Ag4rwEGkS8w: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:03.380 [error] yt-dlp download error for media item #14553: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] Ag4rwEGkS8w: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:03.381 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] Ag4rwEGkS8w: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:03.381 [info] {"args":{"id":14553},"id":16343,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1747469,"event":"job:stop","queue_time":2632885,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:03.388 [info] {"args":{"id":14555},"id":16345,"meta":{},"system_time":1792291863388594496,"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"]} 02:51:03.389 [debug] QUERY OK source="media_items" db=0.1ms idle=341.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [14555] 02:51:03.389 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:03.389 [debug] QUERY OK source="sources" db=0.1ms idle=341.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:03.389 [debug] QUERY OK source="media_profiles" db=0.1ms idle=265.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] 02:51:03.390 [debug] QUERY OK source="media_items" db=0.1ms idle=8.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [14555] 02:51:03.390 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [14555] 02:51:03.390 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:51:03.391 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:03.391 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:03.391 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:03.459 [debug] QUERY OK source="settings" db=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 [] 02:51:03.459 [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 [] 02:51:03.460 [debug] QUERY OK source="settings" db=0.1ms 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 [] 02:51:03.460 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1T1NbJ_UeDU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ef/df/efdf6212870eb0ff75f146796191060880bcaa219183cf94b04ab0aa6952352f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:04.731 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CtFZUJtRJT4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/ab/b1abcdff7e8e065c1609c79a56ab2cf4e0fa49210d16ef72aad4a346cc128097.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] CtFZUJtRJT4: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:04.731 [error] yt-dlp download error for media item #14554: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] CtFZUJtRJT4: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:04.731 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] CtFZUJtRJT4: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:04.732 [info] {"args":{"id":14554},"id":16344,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1728352,"event":"job:stop","queue_time":4002812,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:04.739 [info] {"args":{"id":14556},"id":16346,"meta":{},"system_time":1792291864739267835,"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"]} 02:51:04.739 [debug] QUERY OK source="media_items" db=0.1ms idle=1279.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" = ?) [14556] 02:51:04.740 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:04.740 [debug] QUERY OK source="sources" db=0.1ms idle=1280.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:04.740 [debug] QUERY OK source="media_profiles" db=0.1ms idle=615.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] 02:51:04.741 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [14556] 02:51:04.809 [debug] QUERY OK source="media_metadata" db=0.1ms idle=69.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" = ?) [14556] 02:51:04.809 [debug] QUERY OK source="media_profiles" db=0.0ms idle=69.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] 02:51:04.809 [debug] QUERY OK source="settings" db=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 [] 02:51:04.809 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:04.810 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:04.810 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:04.810 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:04.810 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:04.811 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8el_AgA5fq0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2a/94/2a94bf4b8a77916ff270038d5bf8a8fa15ce6a97ce6f5c755f7474a5abefa1a1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:05.062 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1T1NbJ_UeDU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ef/df/efdf6212870eb0ff75f146796191060880bcaa219183cf94b04ab0aa6952352f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 1T1NbJ_UeDU: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:05.062 [error] yt-dlp download error for media item #14555: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 1T1NbJ_UeDU: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:05.062 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 1T1NbJ_UeDU: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:05.063 [info] {"args":{"id":14555},"id":16345,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1674148,"event":"job:stop","queue_time":4387898,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:05.069 [info] {"args":{"id":14557},"id":16347,"meta":{},"system_time":1792291865069465752,"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"]} 02:51:05.070 [debug] QUERY OK source="media_items" db=0.2ms idle=259.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" = ?) [14557] 02:51:05.070 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:05.070 [debug] QUERY OK source="sources" db=0.2ms idle=259.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:05.071 [debug] QUERY OK source="media_profiles" db=0.2ms idle=259.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] 02:51:05.071 [debug] QUERY OK source="media_items" db=0.2ms idle=7.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 [14557] 02:51:05.111 [debug] QUERY OK source="media_metadata" db=0.1ms idle=42.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" = ?) [14557] 02:51:05.112 [debug] QUERY OK source="media_profiles" db=0.0ms idle=41.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] 02:51:05.112 [debug] QUERY OK source="settings" db=0.0ms idle=41.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:05.112 [debug] QUERY OK source="settings" db=0.1ms idle=41.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:05.112 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:05.158 [debug] QUERY OK source="settings" db=0.1ms idle=46.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:05.158 [debug] QUERY OK source="settings" db=0.0ms idle=46.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:05.159 [debug] QUERY OK source="settings" db=0.0ms idle=46.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:05.159 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=LeDVFDRiOeM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8b/e8/8be805a7f326d20034765f865937781582bb84ca973a70f88060b70074aa08d3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:06.516 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8el_AgA5fq0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2a/94/2a94bf4b8a77916ff270038d5bf8a8fa15ce6a97ce6f5c755f7474a5abefa1a1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 8el_AgA5fq0: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:06.516 [error] yt-dlp download error for media item #14556: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 8el_AgA5fq0: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:06.516 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 8el_AgA5fq0: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:06.517 [info] {"args":{"id":14556},"id":16346,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1777534,"event":"job:stop","queue_time":5737902,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:06.523 [info] {"args":{"id":14558},"id":16348,"meta":{},"system_time":1792291866523694071,"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"]} 02:51:06.524 [debug] QUERY OK source="media_items" db=0.1ms idle=321.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [14558] 02:51:06.524 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:06.524 [debug] QUERY OK source="sources" db=0.1ms idle=322.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:06.525 [debug] QUERY OK source="media_profiles" db=0.1ms idle=322.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] 02:51:06.525 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [14558] 02:51:06.594 [debug] QUERY OK source="media_metadata" db=0.1ms idle=70.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" = ?) [14558] 02:51:06.594 [debug] QUERY OK source="media_profiles" db=0.2ms idle=70.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:51:06.595 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:06.595 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:06.595 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:06.595 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:06.595 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:06.596 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:06.596 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=htiqfP1URPc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7a/26/7a26833e2c3b6fca1e13980dd45755182857efe2eed99b9a4795fc0dfc4a6271.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:06.971 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=LeDVFDRiOeM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8b/e8/8be805a7f326d20034765f865937781582bb84ca973a70f88060b70074aa08d3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] LeDVFDRiOeM: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:06.971 [error] yt-dlp download error for media item #14557: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] LeDVFDRiOeM: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:06.971 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] LeDVFDRiOeM: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:06.972 [info] {"args":{"id":14557},"id":16347,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1902310,"event":"job:stop","queue_time":6068816,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:06.978 [info] {"args":{"id":14560},"id":16349,"meta":{},"system_time":1792291866978721287,"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"]} 02:51:06.979 [debug] QUERY OK source="media_items" db=0.3ms idle=383.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" = ?) [14560] 02:51:06.979 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:06.980 [debug] QUERY OK source="sources" db=0.2ms idle=383.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:06.980 [debug] QUERY OK source="media_profiles" db=0.1ms idle=384.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] 02:51:06.980 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [14560] 02:51:07.024 [debug] QUERY OK source="media_metadata" db=0.1ms idle=45.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" = ?) [14560] 02:51:07.024 [debug] QUERY OK source="media_profiles" db=0.3ms idle=44.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] 02:51:07.025 [debug] QUERY OK source="settings" db=0.0ms idle=45.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:07.025 [debug] QUERY OK source="settings" db=0.1ms idle=44.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:07.025 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:07.026 [debug] QUERY OK source="settings" db=0.0ms idle=45.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:07.026 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:07.026 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:07.026 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3-oDo-SWSWQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/cf/4bcf342c01ab68e31a2ef472cdf961449c5c3cd3284c070510d655c281fed0ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:08.484 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=htiqfP1URPc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7a/26/7a26833e2c3b6fca1e13980dd45755182857efe2eed99b9a4795fc0dfc4a6271.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] htiqfP1URPc: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:08.484 [error] yt-dlp download error for media item #14558: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] htiqfP1URPc: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:08.485 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] htiqfP1URPc: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:08.485 [info] {"args":{"id":14558},"id":16348,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1961373,"event":"job:stop","queue_time":7522859,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:08.491 [info] {"args":{"id":14580},"id":16350,"meta":{},"system_time":1792291868491401032,"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"]} 02:51:08.491 [debug] QUERY OK source="media_items" db=0.1ms idle=289.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" = ?) [14580] 02:51:08.492 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:08.492 [debug] QUERY OK source="sources" db=0.1ms idle=290.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:08.492 [debug] QUERY OK source="media_profiles" db=0.1ms idle=290.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] 02:51:08.492 [debug] QUERY OK source="media_items" db=0.2ms idle=7.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [14580] 02:51:08.561 [debug] QUERY OK source="media_metadata" db=0.1ms idle=70.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" = ?) [14580] 02:51:08.562 [debug] QUERY OK source="media_profiles" db=0.1ms idle=70.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] 02:51:08.562 [debug] QUERY OK source="settings" db=0.1ms 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 [] 02:51:08.562 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:08.562 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:08.608 [debug] QUERY OK source="settings" db=0.1ms idle=115.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:08.609 [debug] QUERY OK source="settings" db=0.1ms idle=47.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:08.609 [debug] QUERY OK source="settings" db=0.0ms idle=46.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:08.609 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dzDcRPYduBM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/21/f1/21f119702cfaa79de215da218964743b1c3bcb47f1778fe1dc1d8cb57c41aca5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:08.713 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3-oDo-SWSWQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/cf/4bcf342c01ab68e31a2ef472cdf961449c5c3cd3284c070510d655c281fed0ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] 3-oDo-SWSWQ: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:08.714 [error] yt-dlp download error for media item #14560: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3-oDo-SWSWQ: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:08.714 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] 3-oDo-SWSWQ: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:08.714 [info] {"args":{"id":14560},"id":16349,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1735546,"event":"job:stop","queue_time":7977918,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:08.722 [info] {"args":{"id":14581},"id":16351,"meta":{},"system_time":1792291868722055916,"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"]} 02:51:08.722 [debug] QUERY OK source="media_items" db=0.1ms idle=113.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" = ?) [14581] 02:51:08.722 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:08.722 [debug] QUERY OK source="sources" db=0.1ms idle=113.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:08.723 [debug] QUERY OK source="media_profiles" db=0.1ms idle=113.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] 02:51:08.723 [debug] QUERY OK source="media_items" db=0.2ms idle=8.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 [14581] 02:51:08.724 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [14581] 02:51:08.724 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:51:08.725 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:08.725 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:08.725 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:08.851 [debug] QUERY OK source="settings" db=0.1ms idle=127.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:08.851 [debug] QUERY OK source="settings" db=0.2ms 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 [] 02:51:08.851 [debug] QUERY OK source="settings" db=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 [] 02:51:08.852 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Wuys1H1saKY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/4b/774b71c07b416ba52651ba5e9152dced28d4c97684921397b62239a08daa175c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:09.088 [info] {"source":"oban","duration":1461,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:51:10.585 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dzDcRPYduBM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/21/f1/21f119702cfaa79de215da218964743b1c3bcb47f1778fe1dc1d8cb57c41aca5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] dzDcRPYduBM: This video is available to this channel's members on level: 얄팍한 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:10.585 [error] yt-dlp download error for media item #14580: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] dzDcRPYduBM: This video is available to this channel's members on level: 얄팍한 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:10.585 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] dzDcRPYduBM: This video is available to this channel's members on level: 얄팍한 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:10.586 [info] {"args":{"id":14580},"id":16350,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":2094309,"event":"job:stop","queue_time":9490787,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:10.592 [info] {"args":{"id":14583},"id":16352,"meta":{},"system_time":1792291870592555780,"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"]} 02:51:10.593 [debug] QUERY OK source="media_items" db=0.2ms idle=390.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [14583] 02:51:10.593 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:10.593 [debug] QUERY OK source="sources" db=0.1ms idle=391.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:10.593 [debug] QUERY OK source="media_profiles" db=0.1ms idle=391.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] 02:51:10.594 [debug] QUERY OK source="media_items" db=0.3ms idle=7.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 [14583] 02:51:10.638 [debug] QUERY OK source="media_metadata" db=0.1ms idle=45.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [14583] 02:51:10.638 [debug] QUERY OK source="media_profiles" db=0.2ms idle=45.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] 02:51:10.639 [debug] QUERY OK source="settings" db=0.1ms idle=45.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:10.639 [debug] QUERY OK source="settings" db=0.1ms idle=45.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:10.639 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:10.657 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Wuys1H1saKY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/4b/774b71c07b416ba52651ba5e9152dced28d4c97684921397b62239a08daa175c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] Wuys1H1saKY: This video is available to this channel's members on level: 얄팍한 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:10.658 [error] yt-dlp download error for media item #14581: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] Wuys1H1saKY: This video is available to this channel's members on level: 얄팍한 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:10.658 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] Wuys1H1saKY: This video is available to this channel's members on level: 얄팍한 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:10.658 [info] {"args":{"id":14581},"id":16351,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1936148,"event":"job:stop","queue_time":9720848,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:10.664 [info] {"args":{"id":17145},"id":16353,"meta":{},"system_time":1792291870664387346,"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"]} 02:51:10.664 [debug] QUERY OK source="media_items" db=0.1ms idle=25.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" = ?) [17145] 02:51:10.690 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:10.691 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [5] 02:51:10.691 [debug] QUERY OK source="settings" db=0.2ms idle=51.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:10.691 [debug] QUERY OK source="settings" db=0.1ms idle=32.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:10.691 [debug] QUERY OK source="media_profiles" db=0.3ms idle=27.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] 02:51:10.692 [debug] QUERY OK source="settings" db=0.1ms idle=27.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:10.692 [debug] QUERY OK source="media_items" db=0.1ms idle=0.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 [17145] 02:51:10.692 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dvD-oNyKKAI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/12/51/1251ae80cdd2592db87e18b785843e2eb39c7cf09f74b718ca4479882a5ee2a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:10.692 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [17145] 02:51:10.693 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:51:10.693 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:10.693 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:10.693 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:10.694 [debug] QUERY OK source="settings" db=0.0ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:10.694 [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 [] 02:51:10.694 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:10.695 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=xTt7-_1lUUU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4c/b6/4cb687ad44ae33ff70b1ddced0c020410096db5af0b75ba8936af8b1c9d01ef3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:12.378 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=xTt7-_1lUUU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4c/b6/4cb687ad44ae33ff70b1ddced0c020410096db5af0b75ba8936af8b1c9d01ef3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] xTt7-_1lUUU: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:12.378 [error] yt-dlp download error for media item #17145: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] xTt7-_1lUUU: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:12.379 [debug] QUERY OK source="media_items" db=0.5ms idle=242.9ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] xTt7-_1lUUU: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-10-18 02:51:12Z], 17145] 02:51:12.379 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] xTt7-_1lUUU: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:12.379 [info] {"args":{"id":17145},"id":16353,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1715168,"event":"job:stop","queue_time":11663820,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:12.386 [info] {"args":{"id":17834},"id":16354,"meta":{},"system_time":1792291872386461115,"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"]} 02:51:12.386 [debug] QUERY OK source="media_items" db=0.1ms idle=184.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" = ?) [17834] 02:51:12.387 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:12.387 [debug] QUERY OK source="sources" db=0.1ms idle=185.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:12.387 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.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] 02:51:12.387 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [17834] 02:51:12.388 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [17834] 02:51:12.388 [debug] QUERY OK source="media_profiles" db=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] 02:51:12.388 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:12.389 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:12.389 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:12.389 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:12.389 [debug] QUERY OK source="settings" db=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 [] 02:51:12.390 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:12.390 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=maGDRKu-8BY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/67/bd/67bd7d9ce433a0bb3ff5f5bbe247fce4e3c81e5c873ec0741275a938e3ed1c6b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:12.506 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dvD-oNyKKAI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/12/51/1251ae80cdd2592db87e18b785843e2eb39c7cf09f74b718ca4479882a5ee2a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] dvD-oNyKKAI: This video is available to this channel's members on level: 얄팍한 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:12.506 [error] yt-dlp download error for media item #14583: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] dvD-oNyKKAI: This video is available to this channel's members on level: 얄팍한 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:12.506 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] dvD-oNyKKAI: This video is available to this channel's members on level: 얄팍한 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:12.507 [info] {"args":{"id":14583},"id":16352,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1914290,"event":"job:stop","queue_time":11591827,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:12.513 [info] {"args":{"id":17975},"id":16355,"meta":{},"system_time":1792291872513812024,"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"]} 02:51:12.514 [debug] QUERY OK source="media_items" db=0.2ms idle=124.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" = ?) [17975] 02:51:12.514 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:12.514 [debug] QUERY OK source="sources" db=0.1ms idle=124.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:12.515 [debug] QUERY OK source="media_profiles" db=0.1ms idle=124.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] 02:51:12.515 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [17975] 02:51:12.516 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [17975] 02:51:12.516 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 02:51:12.516 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:12.516 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:12.517 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:12.598 [info] GET /sources/4/media/50467/force_download 02:51:12.599 [debug] QUERY OK source="settings" db=0.2ms idle=83.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:12.599 [debug] QUERY OK source="settings" db=0.1ms idle=83.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:12.599 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:51:12.600 [error] #PID<0.91272.0> running PinchflatWeb.Endpoint (connection #PID<0.91271.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/50467/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/50467/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91271.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50467/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37102}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50467", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91272.0>, params: %{}, path_info: ["sources", "4", "media", "50467", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/50467"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/50467/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_9lAUi5Hjby0ACZJB"} ], 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.91271.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50467/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37102}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50467", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/50467/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91271.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50467/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37102}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50467", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:51:12.649 [debug] QUERY OK source="settings" db=0.1ms idle=132.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:12.649 [debug] QUERY OK source="settings" db=0.1ms idle=132.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:12.649 [debug] QUERY OK source="settings" db=0.1ms idle=132.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:12.650 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=w7IeJWvNFEI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/56/90/5690202cff8c6b7f6b04ebf9a7ea2201cc2caa0cd8974a9d4b080e5b029c37cd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:14.072 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=maGDRKu-8BY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/67/bd/67bd7d9ce433a0bb3ff5f5bbe247fce4e3c81e5c873ec0741275a938e3ed1c6b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] maGDRKu-8BY: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:14.072 [error] yt-dlp download error for media item #17834: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] maGDRKu-8BY: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:14.072 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] maGDRKu-8BY: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:14.073 [info] {"args":{"id":17834},"id":16354,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1686113,"event":"job:stop","queue_time":13385856,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:14.079 [info] {"args":{"id":18260},"id":16356,"meta":{},"system_time":1792291874079625822,"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"]} 02:51:14.080 [debug] QUERY OK source="media_items" db=0.1ms idle=1430.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" = ?) [18260] 02:51:14.080 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:14.080 [debug] QUERY OK source="sources" db=0.1ms idle=1430.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:14.080 [debug] QUERY OK source="media_profiles" db=0.1ms idle=942.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] 02:51:14.081 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [18260] 02:51:14.146 [debug] QUERY OK source="media_metadata" db=0.1ms idle=66.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" = ?) [18260] 02:51:14.147 [debug] QUERY OK source="media_profiles" db=0.1ms idle=66.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] 02:51:14.147 [debug] QUERY OK source="settings" db=0.1ms idle=66.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:14.147 [debug] QUERY OK source="settings" db=0.1ms 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 [] 02:51:14.147 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:14.148 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:51:14.148 [debug] QUERY OK source="settings" db=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 [] 02:51:14.148 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:14.149 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=heqADNCGaa4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/be/b0becf5b66e323d0841acc06311300cb0d337585e72796c29fc6d5605a57605e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:14.333 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=w7IeJWvNFEI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/56/90/5690202cff8c6b7f6b04ebf9a7ea2201cc2caa0cd8974a9d4b080e5b029c37cd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] w7IeJWvNFEI: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:14.333 [error] yt-dlp download error for media item #17975: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] w7IeJWvNFEI: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:14.333 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] w7IeJWvNFEI: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:14.334 [info] {"args":{"id":17975},"id":16355,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1820037,"event":"job:stop","queue_time":13512893,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:14.340 [info] {"args":{"id":21487},"id":16357,"meta":{},"system_time":1792291874340679363,"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"]} 02:51:14.341 [debug] QUERY OK source="media_items" db=0.2ms idle=192.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" = ?) [21487] 02:51:14.341 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:51:14.341 [debug] QUERY OK source="sources" db=0.1ms idle=192.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:51:14.341 [debug] QUERY OK source="media_profiles" db=0.1ms idle=192.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] 02:51:14.342 [debug] QUERY OK source="media_items" db=0.1ms idle=7.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 [21487] 02:51:14.394 [debug] QUERY OK source="media_metadata" db=0.1ms idle=53.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" = ?) [21487] 02:51:14.394 [debug] QUERY OK source="media_profiles" db=0.1ms idle=53.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] 02:51:14.394 [debug] QUERY OK source="settings" db=0.1ms idle=53.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:14.395 [debug] QUERY OK source="settings" db=0.0ms idle=53.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:14.395 [debug] Running yt-dlp command for action: get_downloadable_status 02:51:14.447 [debug] QUERY OK source="settings" db=0.2ms idle=105.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:14.448 [debug] QUERY OK source="settings" db=0.1ms idle=53.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:14.448 [debug] QUERY OK source="settings" db=0.1ms idle=53.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:14.448 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u2tGmIWBn8Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/94/4e949449f7ba8b3e1103d92a05865367e209a452e4fff89b393332a0ec608b15.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:51:15.814 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=heqADNCGaa4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/be/b0becf5b66e323d0841acc06311300cb0d337585e72796c29fc6d5605a57605e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] heqADNCGaa4: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:15.815 [error] yt-dlp download error for media item #18260: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] heqADNCGaa4: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:15.815 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] heqADNCGaa4: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:15.815 [info] {"args":{"id":18260},"id":16356,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1735712,"event":"job:stop","queue_time":15078877,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:16.115 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u2tGmIWBn8Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/94/4e949449f7ba8b3e1103d92a05865367e209a452e4fff89b393332a0ec608b15.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] u2tGmIWBn8Y: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 02:51:16.116 [error] yt-dlp download error for media item #21487: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] u2tGmIWBn8Y: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:16.116 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] u2tGmIWBn8Y: This video is available to this channel's members on level: 주식매매 자동화 멤버십 (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 02:51:16.116 [info] {"args":{"id":21487},"id":16357,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1775607,"event":"job:stop","queue_time":15339912,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:51:32.606 [info] GET /sources/7/media/50086/force_download 02:51:32.607 [debug] QUERY OK source="settings" db=0.1ms idle=1405.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:32.607 [debug] QUERY OK source="settings" db=0.1ms idle=1405.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:32.607 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:51:32.607 [error] #PID<0.91281.0> running PinchflatWeb.Endpoint (connection #PID<0.91280.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50086/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50086/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91280.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50086/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 56292}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50086", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91281.0>, params: %{}, path_info: ["sources", "7", "media", "50086", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/50086"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/50086/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9_-vilrpRjm2EABZzC"} ], 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.91280.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50086/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 56292}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50086", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/50086/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91280.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50086/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 56292}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYZnZOSS1KVVpILWk5SjQ5bnAyOVh2WUx0.4_GRwkQTa2up9XM84IZ1z4r52HbXkH1jMTUR5mZ313M", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50086", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, (truncated) 02:51:39.090 [info] {"source":"oban","duration":1194,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:51:52.566 [info] GET /sources/7/media/32682/force_download 02:51:52.566 [debug] QUERY OK source="settings" db=0.1ms idle=1364.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:52.567 [debug] QUERY OK source="settings" db=0.0ms idle=389.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:51:52.567 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:51:52.567 [error] #PID<0.91285.0> running PinchflatWeb.Endpoint (connection #PID<0.91284.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/32682/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/32682/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91284.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32682/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 58272}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32682", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91285.0>, params: %{}, path_info: ["sources", "7", "media", "32682", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/32682"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/32682/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN9__55QyIJTdcsACZJh"} ], 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.91284.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32682/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 58272}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32682", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/32682/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91284.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32682/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 58272}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32682", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91285.0>, params: %{}, path_info: ["sources", "7", "media", "32682", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:52:00.312 [info] {"source":"oban","duration":229,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:52:09.092 [info] {"source":"oban","duration":1254,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:52:12.566 [info] GET /sources/4/media/48798/force_download 02:52:12.566 [debug] QUERY OK source="settings" db=0.2ms idle=367.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:52:12.566 [debug] QUERY OK source="settings" db=0.0ms idle=364.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:52:12.566 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:52:12.567 [error] #PID<0.91290.0> running PinchflatWeb.Endpoint (connection #PID<0.91289.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/48798/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/48798/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91289.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/48798/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 59622}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/48798", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91290.0>, params: %{}, path_info: ["sources", "4", "media", "48798", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/48798"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/48798/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-ABEZmF8ToRB8ACZKh"} ], 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.91289.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/48798/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 59622}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/48798", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/48798/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91289.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/48798/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 59622}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/48798", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91290.0>, params: %{}, path_info: ["sources", "4", "media", "48798", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:52:32.583 [info] GET /sources/6/media/50411/force_download 02:52:32.584 [debug] QUERY OK source="settings" db=0.4ms idle=382.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:52:32.585 [debug] QUERY OK source="settings" db=0.1ms idle=383.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:52:32.585 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:52:32.585 [error] #PID<0.91293.0> running PinchflatWeb.Endpoint (connection #PID<0.91292.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/6/media/50411/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/6/media/50411/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91292.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/50411/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 40754}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/50411", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91293.0>, params: %{}, path_info: ["sources", "6", "media", "50411", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/6/media/50411"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/6/media/50411/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-ACO-N1rIjXIIACZLB"} ], 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.91292.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/50411/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 40754}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/50411", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/6/media/50411/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91292.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/50411/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 40754}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/50411", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91293.0>, params: %{}, path_info: ["sources", "6", "media", "50411", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:52:39.094 [info] {"source":"oban","duration":1292,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:52:52.590 [info] GET /sources/4/media/48592/force_download 02:52:52.591 [debug] QUERY OK source="settings" db=0.1ms idle=389.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:52:52.591 [debug] QUERY OK source="settings" db=0.1ms idle=389.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:52:52.591 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:52:52.591 [error] #PID<0.91297.0> running PinchflatWeb.Endpoint (connection #PID<0.91296.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/48592/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/48592/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91296.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/48592/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 58450}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/48592", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91297.0>, params: %{}, path_info: ["sources", "4", "media", "48592", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/48592"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/48592/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-ADZgL3DKZ2n4ACZMB"} ], 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.91296.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/48592/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 58450}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/48592", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/48592/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91296.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/48592/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 58450}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/48592", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91297.0>, params: %{}, path_info: ["sources", "4", "media", "48592", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:53:00.313 [info] {"source":"oban","duration":188,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:53:09.095 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:53:12.566 [info] GET /sources/7/media/49047/force_download 02:53:12.567 [debug] QUERY OK source="settings" db=0.3ms idle=364.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:53:12.567 [debug] QUERY OK source="settings" db=0.0ms idle=365.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:53:12.567 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:53:12.567 [error] #PID<0.91301.0> running PinchflatWeb.Endpoint (connection #PID<0.91300.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/49047/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/49047/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91300.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/49047/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54944}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/49047", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91301.0>, params: %{}, path_info: ["sources", "7", "media", "49047", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/49047"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/49047/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AEj6x_ONMomQACZNB"} ], 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.91300.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/49047/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54944}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/49047", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/49047/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91300.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/49047/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54944}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/49047", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91301.0>, params: %{}, path_info: ["sources", "7", "media", "49047", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:53:32.638 [info] GET /sources/5/media/42549/force_download 02:53:32.639 [debug] QUERY OK source="settings" db=0.1ms idle=437.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:53:32.639 [debug] QUERY OK source="settings" db=0.1ms idle=437.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:53:32.639 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:53:32.639 [error] #PID<0.91304.0> running PinchflatWeb.Endpoint (connection #PID<0.91303.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/5/media/42549/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/5/media/42549/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91303.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/42549/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46242}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/42549", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91304.0>, params: %{}, path_info: ["sources", "5", "media", "42549", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/5/media/42549"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/5/media/42549/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AFusXSZVppgEACZNh"} ], 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.91303.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/42549/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46242}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/42549", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/5/media/42549/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91303.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/5/media/42549/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46242}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/5/media/42549", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91304.0>, params: %{}, path_info: ["sources", "5", "media", "42549", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:53:39.097 [info] {"source":"oban","duration":1096,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:53:52.614 [info] GET /sources/3/media/48347/force_download 02:53:52.614 [debug] QUERY OK source="settings" db=0.1ms idle=412.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:53:52.614 [debug] QUERY OK source="settings" db=0.0ms idle=412.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:53:52.614 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:53:52.615 [error] #PID<0.91308.0> running PinchflatWeb.Endpoint (connection #PID<0.91307.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/3/media/48347/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/48347/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91307.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/48347/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49664}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/48347", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91308.0>, params: %{}, path_info: ["sources", "3", "media", "48347", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/3/media/48347"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/3/media/48347/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AG5G4F79mzYoACZOh"} ], 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.91307.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/48347/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49664}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/48347", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/3/media/48347/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91307.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/48347/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 49664}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/48347", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91308.0>, params: %{}, path_info: ["sources", "3", "media", "48347", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:54:00.314 [info] {"source":"oban","duration":127,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:54:09.098 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:54:12.579 [info] GET /sources/7/media/32621/force_download 02:54:12.580 [debug] QUERY OK source="settings" db=0.1ms idle=377.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:54:12.580 [debug] QUERY OK source="settings" db=0.1ms idle=378.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:54:12.580 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:54:12.580 [error] #PID<0.91313.0> running PinchflatWeb.Endpoint (connection #PID<0.91312.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/32621/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/32621/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91312.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32621/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 52558}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32621", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91313.0>, params: %{}, path_info: ["sources", "7", "media", "32621", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/32621"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/32621/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AIDfCOeOmt_MACZPh"} ], 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.91312.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32621/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 52558}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32621", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/32621/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91312.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32621/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 52558}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32621", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91313.0>, params: %{}, path_info: ["sources", "7", "media", "32621", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:54:32.569 [info] GET /sources/6/media/48483/force_download 02:54:32.569 [debug] QUERY OK source="settings" db=0.2ms idle=367.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:54:32.569 [debug] QUERY OK source="settings" db=0.0ms idle=367.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:54:32.569 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:54:32.570 [error] #PID<0.91316.0> running PinchflatWeb.Endpoint (connection #PID<0.91315.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/6/media/48483/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/6/media/48483/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91315.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/48483/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37152}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/48483", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91316.0>, params: %{}, path_info: ["sources", "6", "media", "48483", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/6/media/48483"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/6/media/48483/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AJN87Ia3wBJYABZ0C"} ], 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.91315.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/48483/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37152}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/48483", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/6/media/48483/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91315.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/48483/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 37152}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/48483", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91316.0>, params: %{}, path_info: ["sources", "6", "media", "48483", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:54:39.099 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:54:52.607 [info] GET /sources/7/media/50300/force_download 02:54:52.608 [debug] QUERY OK source="settings" db=0.3ms idle=405.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:54:52.608 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:54:52.608 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:54:52.608 [error] #PID<0.91320.0> running PinchflatWeb.Endpoint (connection #PID<0.91319.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50300/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50300/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91319.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50300/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 39636}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50300", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91320.0>, params: %{}, path_info: ["sources", "7", "media", "50300", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/50300"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/50300/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AKYmYLJR9u7QACZQB"} ], 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.91319.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50300/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 39636}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50300", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/50300/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91319.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50300/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 39636}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50300", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91320.0>, params: %{}, path_info: ["sources", "7", "media", "50300", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:55:00.315 [info] {"source":"oban","duration":221,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:55:03.087 [info] GET / 02:55:03.088 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:55:03.088 [debug] QUERY OK source="settings" db=0.1ms idle=886.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:03.088 [debug] QUERY OK source="media_profiles" db=0.0ms idle=886.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:55:03.088 [debug] QUERY OK source="sources" db=0.0ms idle=886.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:55:03.098 [debug] QUERY OK source="media_items" db=9.6ms idle=886.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:55:03.100 [debug] QUERY OK source="media_items" db=1.9ms idle=728.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:55:03.101 [debug] QUERY OK source="settings" db=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 [] 02:55:03.101 [debug] QUERY OK source="settings" db=0.2ms idle=12.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:03.101 [debug] QUERY OK source="settings" db=0.0ms idle=13.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:03.102 [debug] QUERY OK source="tasks" db=0.2ms idle=3.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"] 02:55:03.104 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 02:55:03.104 [debug] QUERY OK source="media_items" db=0.4ms idle=3.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:55:03.105 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?,?)) [6, 4, 7] 02:55:03.113 [debug] QUERY OK source="media_items" db=7.5ms idle=3.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 02:55:03.114 [debug] QUERY OK source="media_items" db=1.0ms idle=10.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] 02:55:03.115 [debug] QUERY OK source="sources" db=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 (?,?)) [7, 3] 02:55:03.115 [info] Sent 200 in 28ms 02:55:03.926 [info] GET /favicon.png 02:55:03.927 [debug] QUERY OK source="settings" db=0.1ms idle=822.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:03.927 [debug] QUERY OK source="settings" db=0.0ms idle=814.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:03.927 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:55:03.927 [error] #PID<0.91326.0> running PinchflatWeb.Endpoint (connection #PID<0.91325.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /favicon.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 /favicon (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91325.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/favicon.png", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 32972}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "okhttp/5.3.0", "x-forwarded-for" => "54.88.111.244", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "54.88.111.244" }, 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.moozuk.net", method: "GET", owner: #PID<0.91326.0>, params: %{}, path_info: ["favicon"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "okhttp/5.3.0"}, {"x-forwarded-for", "54.88.111.244"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "54.88.111.244"} ], request_path: "/favicon.png", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-ALCxKu_eOBkAABZ1i"} ], 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.91325.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/favicon.png", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 32972}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "okhttp/5.3.0", "x-forwarded-for" => "54.88.111.244", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "54.88.111.244" }, 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 /favicon (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91325.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/favicon.png", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 32972}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.moozuk.net", "user-agent" => "okhttp/5.3.0", "x-forwarded-for" => "54.88.111.244", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "54.88.111.244" }, 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.moozuk.net", method: "GET", owner: #PID<0.91326.0>, params: %{}, path_info: ["favicon"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "okhttp/5.3.0"}, {"x-forwarded-for", "54.88.111.244"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "54.88.111.244"} ], request_path: "/favicon.png", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-ALCxKu_eOBkAABZ1i"} ], 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]}, (truncated) 02:55:09.100 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:55:12.566 [info] GET /sources/3/media/47935/force_download 02:55:12.566 [debug] QUERY OK source="settings" db=0.1ms idle=1186.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:12.566 [debug] QUERY OK source="settings" db=0.0ms idle=364.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:12.566 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:55:12.567 [error] #PID<0.91332.0> running PinchflatWeb.Endpoint (connection #PID<0.91331.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/3/media/47935/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/47935/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91331.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/47935/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 34702}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/47935", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91332.0>, params: %{}, path_info: ["sources", "3", "media", "47935", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/3/media/47935"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/3/media/47935/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-ALi87nkh3YP4ABZ2C"} ], 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.91331.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/47935/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 34702}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/47935", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/3/media/47935/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91331.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/47935/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 34702}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/47935", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91332.0>, params: %{}, path_info: ["sources", "3", "media", "47935", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:55:22.356 [info] GET / 02:55:22.356 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 02:55:22.356 [debug] QUERY OK source="settings" db=0.2ms idle=967.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:22.357 [debug] QUERY OK source="media_profiles" db=0.0ms idle=155.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 02:55:22.357 [debug] QUERY OK source="sources" db=0.0ms idle=155.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 02:55:22.359 [debug] QUERY OK source="media_items" db=1.8ms idle=155.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:55:22.361 [debug] QUERY OK source="media_items" db=2.3ms idle=157.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 02:55:22.361 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:55:22.362 [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 [] 02:55:22.362 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:55:22.363 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 02:55:22.364 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 02:55:22.365 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 02:55:22.365 [debug] QUERY OK source="sources" db=0.1ms idle=3.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 (?,?,?)) [6, 4, 7] 02:55:22.373 [debug] QUERY OK source="media_items" db=7.8ms idle=3.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"))) [] 02:55:22.375 [debug] QUERY OK source="media_items" db=0.9ms idle=10.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] 02:55:22.375 [debug] QUERY OK source="sources" db=0.1ms 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 (?,?)) [7, 3] 02:55:22.376 [info] Sent 200 in 20ms 02:55:24.228 [info] CONNECTED TO Phoenix.LiveView.Socket in 38µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "EjUXOz4FNwhAcAwbBDoRR0E_JggrF38bMmnhQDUImDDuVUT6tWKnOTFT", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.moozuk.net/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.moozuk.net/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 02:55:24.432 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "_XySoAbA-4HnRoEq5hmfdC9O", "media_state" => "downloaded"} 02:55:24.434 [debug] QUERY OK source="media_items" db=1.3ms idle=231.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)) [] 02:55:24.435 [debug] QUERY OK source="media_items" db=0.2ms idle=232.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] 02:55:24.435 [debug] QUERY OK source="sources" db=0.1ms idle=233.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 (?,?,?)) [6, 4, 7] 02:55:24.435 [debug] Replied in 2ms 02:55:24.436 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "_XySoAbA-4HnRoEq5hmfdC9O", "media_state" => "pending"} 02:55:24.438 [debug] QUERY OK source="media_items" db=1.8ms idle=234.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"))) [] 02:55:24.441 [debug] QUERY OK source="media_items" db=2.2ms idle=46.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] 02:55:24.441 [debug] QUERY OK source="sources" db=0.1ms idle=6.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 02:55:24.441 [debug] Replied in 5ms 02:55:24.443 [debug] MOUNT Pinchflat.Pages.JobTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "_XySoAbA-4HnRoEq5hmfdC9O"} 02:55:24.443 [debug] QUERY OK source="tasks" db=0.1ms idle=8.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"] 02:55:24.443 [debug] Replied in 421µs 02:55:24.443 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "_XySoAbA-4HnRoEq5hmfdC9O"} 02:55:24.443 [debug] Replied in 52µs 02:55:32.566 [info] GET /sources/7/media/49257/force_download 02:55:32.567 [debug] QUERY OK source="settings" db=0.2ms idle=364.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:32.567 [debug] QUERY OK source="settings" db=0.1ms idle=365.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:32.567 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:55:32.567 [error] #PID<0.91361.0> running PinchflatWeb.Endpoint (connection #PID<0.91360.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/49257/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/49257/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91360.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/49257/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54886}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/49257", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91361.0>, params: %{}, path_info: ["sources", "7", "media", "49257", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/49257"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/49257/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AMtdbuhaqjwEABZ3C"} ], 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.91360.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/49257/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54886}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/49257", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/49257/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91360.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/49257/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54886}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/49257", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91361.0>, params: %{}, path_info: ["sources", "7", "media", "49257", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:55:39.101 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:55:52.566 [info] GET /sources/7/media/32633/force_download 02:55:52.566 [debug] QUERY OK source="settings" db=0.1ms idle=364.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:52.567 [debug] QUERY OK source="settings" db=0.1ms idle=364.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:55:52.567 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:55:52.567 [error] #PID<0.91365.0> running PinchflatWeb.Endpoint (connection #PID<0.91364.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/32633/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/32633/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91364.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32633/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 56048}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32633", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91365.0>, params: %{}, path_info: ["sources", "7", "media", "32633", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/32633"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/32633/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AN39vFxNPzK4ABZ3i"} ], 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.91364.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32633/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 56048}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32633", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/32633/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91364.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32633/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 56048}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/32633", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91365.0>, params: %{}, path_info: ["sources", "7", "media", "32633", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:56:00.316 [info] {"source":"oban","duration":228,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:56:09.103 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:56:12.597 [info] GET /sources/4/media/50045/force_download 02:56:12.598 [debug] QUERY OK source="settings" db=0.1ms idle=396.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:56:12.598 [debug] QUERY OK source="settings" db=0.1ms idle=396.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:56:12.598 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:56:12.598 [error] #PID<0.91370.0> running PinchflatWeb.Endpoint (connection #PID<0.91369.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/50045/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/50045/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91369.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50045/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 43248}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50045", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91370.0>, params: %{}, path_info: ["sources", "4", "media", "50045", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/50045"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/50045/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-APClm4mNnx-kACZbh"} ], 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.91369.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50045/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 43248}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50045", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/50045/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91369.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50045/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 43248}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/50045", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91370.0>, params: %{}, path_info: ["sources", "4", "media", "50045", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:56:32.594 [info] GET /sources/7/media/50089/force_download 02:56:32.594 [debug] QUERY OK source="settings" db=0.2ms idle=392.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:56:32.595 [debug] QUERY OK source="settings" db=0.0ms idle=393.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:56:32.595 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:56:32.595 [error] #PID<0.91373.0> running PinchflatWeb.Endpoint (connection #PID<0.91372.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50089/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50089/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91372.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50089/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45276}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50089", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91373.0>, params: %{}, path_info: ["sources", "7", "media", "50089", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/7/media/50089"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/7/media/50089/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AQNFKme-ZeVQACZcB"} ], 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.91372.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50089/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45276}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50089", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/7/media/50089/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91372.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50089/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 45276}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/7/media/50089", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91373.0>, params: %{}, path_info: ["sources", "7", "media", "50089", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:56:39.105 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:56:52.589 [info] GET /sources/3/media/48970/force_download 02:56:52.590 [debug] QUERY OK source="settings" db=0.1ms idle=388.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:56:52.590 [debug] QUERY OK source="settings" db=0.0ms idle=388.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:56:52.590 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:56:52.590 [error] #PID<0.91377.0> running PinchflatWeb.Endpoint (connection #PID<0.91376.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/3/media/48970/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/48970/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91376.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/48970/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36292}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/48970", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91377.0>, params: %{}, path_info: ["sources", "3", "media", "48970", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/3/media/48970"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/3/media/48970/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-ARXkdG9Q_FEEABZ5C"} ], 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.91376.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/48970/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36292}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/48970", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/3/media/48970/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91376.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/48970/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36292}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/48970", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91377.0>, params: %{}, path_info: ["sources", "3", "media", "48970", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:57:00.317 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:57:09.106 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:57:12.572 [info] GET /sources/6/media/47500/force_download 02:57:12.573 [debug] QUERY OK source="settings" db=0.1ms idle=371.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:57:12.573 [debug] QUERY OK source="settings" db=0.0ms idle=371.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:57:12.573 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:57:12.573 [error] #PID<0.91381.0> running PinchflatWeb.Endpoint (connection #PID<0.91380.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/6/media/47500/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/6/media/47500/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91380.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/47500/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 38466}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/47500", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91381.0>, params: %{}, path_info: ["sources", "6", "media", "47500", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/6/media/47500"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/6/media/47500/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-ASiAxZEVHh7MACZdB"} ], 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.91380.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/47500/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 38466}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/47500", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/6/media/47500/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91380.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/47500/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 38466}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/6/media/47500", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91381.0>, params: %{}, path_info: ["sources", "6", "media", "47500", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:57:32.606 [info] GET /sources/4/media/49424/force_download 02:57:32.607 [debug] QUERY OK source="settings" db=0.1ms idle=405.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:57:32.607 [debug] QUERY OK source="settings" db=0.1ms idle=405.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:57:32.607 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:57:32.607 [error] #PID<0.91384.0> running PinchflatWeb.Endpoint (connection #PID<0.91383.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/49424/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/49424/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91383.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49424/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 42454}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49424", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91384.0>, params: %{}, path_info: ["sources", "4", "media", "49424", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/4/media/49424"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/4/media/49424/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-ATspSFmjYuSIACZdh"} ], 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.91383.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49424/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 42454}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49424", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/4/media/49424/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91383.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/49424/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 42454}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/4/media/49424", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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.moozuk.net", method: "GET", owner: #PID<0.91384.0>, params: %{}, path_info: ["sources", "4", "media", "49424", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, qu (truncated) 02:57:39.108 [info] {"source":"oban","duration":1099,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:57:52.607 [info] GET /sources/3/media/7021/edit 02:57:52.607 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "7021", "source_id" => "3"} Pipelines: [:browser] 02:57:52.607 [debug] QUERY OK source="media_items" db=0.2ms 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 WHERE (m0."id" = ?) [7021] 02:57:52.608 [debug] QUERY OK source="settings" db=0.1ms idle=405.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:57:52.608 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:57:52.608 [debug] QUERY OK source="settings" db=0.0ms idle=406.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:57:52.609 [info] Sent 200 in 2ms 02:58:00.318 [info] {"source":"oban","duration":287,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:58:09.109 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:58:12.566 [info] GET /sources/3/media/7021/force_download 02:58:12.567 [debug] QUERY OK source="settings" db=0.1ms idle=364.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:58:12.567 [debug] QUERY OK source="settings" db=0.1ms idle=365.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:58:12.567 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 02:58:12.567 [error] #PID<0.91393.0> running PinchflatWeb.Endpoint (connection #PID<0.91392.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/3/media/7021/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/7021/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91392.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/7021/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 40030}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOGF3aEhZYlVGMlZJNDNJeW14Z1Z3VlNr.tsigQ2-pdZUwI-d5lVlemZsuHzwjNBhHmBv3qMsnUBI", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/7021", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOGF3aEhZYlVGMlZJNDNJeW14Z1Z3VlNr.tsigQ2-pdZUwI-d5lVlemZsuHzwjNBhHmBv3qMsnUBI" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.91393.0>, params: %{}, path_info: ["sources", "3", "media", "7021", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOGF3aEhZYlVGMlZJNDNJeW14Z1Z3VlNr.tsigQ2-pdZUwI-d5lVlemZsuHzwjNBhHmBv3qMsnUBI" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip,deflate,br"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOGF3aEhZYlVGMlZJNDNJeW14Z1Z3VlNr.tsigQ2-pdZUwI-d5lVlemZsuHzwjNBhHmBv3qMsnUBI"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.moozuk.net"}, {"referer", "https://pinchflat.moozuk.net/sources/3/media/7021"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.57"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "946389744"}, {"x-real-ip", "74.7.227.57"} ], request_path: "/sources/3/media/7021/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-AWBgZDMwUY5sACZfB"} ], 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.91392.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/7021/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 40030}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOGF3aEhZYlVGMlZJNDNJeW14Z1Z3VlNr.tsigQ2-pdZUwI-d5lVlemZsuHzwjNBhHmBv3qMsnUBI", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/7021", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, 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/3/media/7021/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91392.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/7021/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 40030}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip,deflate,br", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOGF3aEhZYlVGMlZJNDNJeW14Z1Z3VlNr.tsigQ2-pdZUwI-d5lVlemZsuHzwjNBhHmBv3qMsnUBI", "from" => "gptbot(at)openai.com", "host" => "pinchflat.moozuk.net", "referer" => "https://pinchflat.moozuk.net/sources/3/media/7021", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.57", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "946389744", "x-real-ip" => "74.7.227.57" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", (truncated) 02:58:39.110 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:58:48.582 [info] GET /sources/3/media/49182 02:58:48.582 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49182", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 02:58:48.582 [debug] QUERY OK source="media_items" db=0.2ms idle=984.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" = ?) [49182] 02:58:48.583 [debug] QUERY OK source="tasks" db=0.2ms idle=381.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49182] 02:58:48.583 [debug] QUERY OK source="sources" db=0.3ms idle=381.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:58:48.583 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=381.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16108] 02:58:48.584 [debug] QUERY OK source="settings" db=0.0ms idle=381.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:58:48.584 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:58:48.584 [debug] QUERY OK source="settings" db=0.2ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:58:48.585 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:58:48.586 [info] Sent 200 in 4ms 02:59:00.319 [info] {"source":"oban","duration":204,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 02:59:04.597 [info] GET /sources/3/media/47935 02:59:04.598 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47935", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 02:59:04.598 [debug] QUERY OK source="media_items" db=0.2ms idle=983.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" = ?) [47935] 02:59:04.599 [debug] QUERY OK source="tasks" db=0.2ms idle=396.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47935] 02:59:04.599 [debug] QUERY OK source="sources" db=0.2ms idle=396.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:59:04.599 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=397.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [15872, 15914] 02:59:04.599 [debug] QUERY OK source="settings" db=0.0ms idle=397.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:04.599 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:04.600 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:04.600 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:59:04.601 [info] Sent 200 in 3ms 02:59:09.111 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:59:17.378 [info] GET /sources/6/media/42082 02:59:17.378 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42082", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 02:59:17.378 [debug] QUERY OK source="media_items" db=0.2ms idle=1176.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" = ?) [42082] 02:59:17.379 [debug] QUERY OK source="tasks" db=0.2ms idle=1176.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42082] 02:59:17.379 [debug] QUERY OK source="sources" db=0.3ms idle=1176.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" = ?) [6] 02:59:17.379 [debug] QUERY OK source="settings" db=0.1ms idle=1177.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:17.379 [debug] QUERY OK source="settings" db=0.0ms idle=751.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:17.380 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:17.380 [debug] QUERY OK source="media_profiles" db=0.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] 02:59:17.381 [info] Sent 200 in 3ms 02:59:27.623 [info] GET /sources/6/media/50411 02:59:27.624 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50411", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 02:59:27.624 [debug] QUERY OK source="media_items" db=0.2ms idle=985.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" = ?) [50411] 02:59:27.624 [debug] QUERY OK source="sources" db=0.1ms idle=422.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" = ?) [6] 02:59:27.624 [debug] QUERY OK source="tasks" db=0.1ms idle=422.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50411] 02:59:27.625 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=423.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16293, 16337] 02:59:27.625 [debug] QUERY OK source="settings" db=0.0ms idle=423.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:27.625 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:27.625 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:27.626 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:59:27.627 [info] Sent 200 in 3ms 02:59:35.814 [info] GET /sources/3/media/48970 02:59:35.814 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48970", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 02:59:35.814 [debug] QUERY OK source="media_items" db=0.2ms idle=612.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" = ?) [48970] 02:59:35.815 [debug] QUERY OK source="sources" db=0.1ms idle=613.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 02:59:35.815 [debug] QUERY OK source="tasks" db=0.3ms idle=613.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48970] 02:59:35.815 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=613.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 (?,?)) [16043, 16122] 02:59:35.815 [debug] QUERY OK source="settings" db=0.0ms idle=168.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:35.816 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:35.816 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:35.816 [debug] QUERY OK source="media_profiles" db=0.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] 02:59:35.817 [info] Sent 200 in 3ms 02:59:39.112 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:59:42.381 [info] GET /sources/5/media/48324 02:59:42.382 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48324", "prevent_download" => "true", "source_id" => "5"} Pipelines: [:browser] 02:59:42.382 [debug] QUERY OK source="media_items" db=0.2ms idle=1180.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" = ?) [48324] 02:59:42.382 [debug] QUERY OK source="sources" db=0.2ms idle=1180.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 02:59:42.382 [debug] QUERY OK source="tasks" db=0.2ms idle=1180.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48324] 02:59:42.383 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=728.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15915] 02:59:42.383 [debug] QUERY OK source="settings" db=0.0ms idle=181.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:42.383 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:42.383 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:42.384 [debug] QUERY OK source="media_profiles" db=0.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] 02:59:42.385 [info] Sent 200 in 3ms 02:59:47.610 [info] GET /sources/7/media/32621 02:59:47.610 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32621", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 02:59:47.611 [debug] QUERY OK source="media_items" db=0.2ms idle=1408.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" = ?) [32621] 02:59:47.611 [debug] QUERY OK source="tasks" db=0.2ms idle=1409.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32621] 02:59:47.611 [debug] QUERY OK source="sources" db=0.3ms idle=1409.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 02:59:47.611 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=1409.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15064, 15555, 16055] 02:59:47.612 [debug] QUERY OK source="settings" db=0.0ms idle=952.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:47.612 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:47.612 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:47.613 [debug] QUERY OK source="media_profiles" db=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] 02:59:47.614 [info] Sent 200 in 3ms 02:59:51.853 [info] GET /sources/6/media/42080 02:59:51.854 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42080", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 02:59:51.854 [debug] QUERY OK source="media_items" db=0.2ms idle=652.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" = ?) [42080] 02:59:51.854 [debug] QUERY OK source="tasks" db=0.1ms idle=652.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42080] 02:59:51.854 [debug] QUERY OK source="sources" db=0.2ms idle=652.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" = ?) [6] 02:59:51.855 [debug] QUERY OK source="settings" db=0.0ms idle=653.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:51.855 [debug] QUERY OK source="settings" db=0.1ms idle=190.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:51.855 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:51.856 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:59:51.857 [info] Sent 200 in 3ms 02:59:55.186 [info] GET /sources/6/media/42078 02:59:55.186 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42078", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 02:59:55.187 [debug] QUERY OK source="media_items" db=0.2ms idle=1985.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" = ?) [42078] 02:59:55.187 [debug] QUERY OK source="tasks" db=0.0ms idle=1985.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42078] 02:59:55.187 [debug] QUERY OK source="sources" db=0.1ms idle=1985.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" = ?) [6] 02:59:55.188 [debug] QUERY OK source="settings" db=0.0ms idle=1521.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:55.188 [debug] QUERY OK source="settings" db=0.0ms idle=520.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:55.188 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:55.189 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:59:55.189 [info] Sent 200 in 3ms 02:59:57.869 [info] GET /sources/4/media/49837 02:59:57.869 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49837", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 02:59:57.869 [debug] QUERY OK source="media_items" db=0.2ms idle=1667.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" = ?) [49837] 02:59:57.870 [debug] QUERY OK source="tasks" db=0.1ms idle=1667.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49837] 02:59:57.870 [debug] QUERY OK source="sources" db=0.3ms idle=1667.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" = ?) [4] 02:59:57.870 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1200.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" = ?) [16216] 02:59:57.870 [debug] QUERY OK source="settings" db=0.0ms idle=200.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:57.870 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:57.871 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:57.871 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:59:57.872 [info] Sent 200 in 3ms 02:59:59.976 [info] GET /sources/7/media/32628 02:59:59.976 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32628", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 02:59:59.976 [debug] QUERY OK source="media_items" db=0.2ms idle=774.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" = ?) [32628] 02:59:59.977 [debug] QUERY OK source="sources" db=0.2ms idle=775.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] 02:59:59.977 [debug] QUERY OK source="tasks" db=0.3ms idle=775.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32628] 02:59:59.977 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=775.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 (?,?,?)) [15066, 15557, 16057] 02:59:59.978 [debug] QUERY OK source="settings" db=0.0ms idle=305.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:59:59.978 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:59.978 [debug] QUERY OK source="settings" db=0.0ms 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 [] 02:59:59.979 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 02:59:59.980 [info] Sent 200 in 3ms 03:00:00.320 [info] {"source":"oban","duration":199,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:00:01.705 [info] GET /sources/4/media/48592 03:00:01.706 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48592", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 03:00:01.706 [debug] QUERY OK source="media_items" db=0.1ms idle=1032.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" = ?) [48592] 03:00:01.706 [debug] QUERY OK source="sources" db=0.0ms idle=504.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" = ?) [4] 03:00:01.707 [debug] QUERY OK source="tasks" db=0.3ms idle=504.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48592] 03:00:01.707 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=505.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15975] 03:00:01.707 [debug] QUERY OK source="settings" db=0.0ms idle=32.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:01.707 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:01.707 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:01.708 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:01.709 [info] Sent 200 in 3ms 03:00:03.092 [info] GET /sources/4/media/50259 03:00:03.093 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50259", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 03:00:03.093 [debug] QUERY OK source="media_items" db=0.2ms idle=1385.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" = ?) [50259] 03:00:03.093 [debug] QUERY OK source="tasks" db=0.2ms idle=1386.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50259] 03:00:03.093 [debug] QUERY OK source="sources" db=0.2ms idle=1385.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" = ?) [4] 03:00:03.094 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1385.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" = ?) [16289] 03:00:03.094 [debug] QUERY OK source="settings" db=0.1ms idle=419.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:03.094 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:03.095 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:03.095 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:03.096 [info] Sent 200 in 3ms 03:00:04.167 [info] GET /sources/7/media/32634 03:00:04.168 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32634", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:04.168 [debug] QUERY OK source="media_items" db=0.2ms idle=1073.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" = ?) [32634] 03:00:04.169 [debug] QUERY OK source="tasks" db=0.1ms idle=1073.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32634] 03:00:04.169 [debug] QUERY OK source="sources" db=0.2ms idle=1073.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] 03:00:04.169 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1073.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15068, 15614, 16153] 03:00:04.170 [debug] QUERY OK source="settings" db=0.1ms idle=493.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:04.170 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:04.170 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:04.170 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:04.171 [info] Sent 200 in 3ms 03:00:05.095 [info] GET /sources/7/media/32635 03:00:05.095 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32635", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:05.095 [debug] QUERY OK source="media_items" db=0.2ms idle=925.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" = ?) [32635] 03:00:05.096 [debug] QUERY OK source="tasks" db=0.1ms idle=925.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32635] 03:00:05.096 [debug] QUERY OK source="sources" db=0.1ms idle=925.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] 03:00:05.096 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=925.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15069, 15615, 16154] 03:00:05.097 [debug] QUERY OK source="settings" db=0.0ms idle=419.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:05.097 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:05.097 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:05.097 [debug] QUERY OK source="media_profiles" db=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] 03:00:05.098 [info] Sent 200 in 3ms 03:00:05.780 [info] GET /sources/7/media/50086 03:00:05.781 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50086", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:05.781 [debug] QUERY OK source="media_items" db=0.1ms idle=684.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" = ?) [50086] 03:00:05.781 [debug] QUERY OK source="tasks" db=0.1ms idle=684.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50086] 03:00:05.781 [debug] QUERY OK source="sources" db=0.1ms idle=684.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] 03:00:05.782 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=684.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16249, 16298] 03:00:05.782 [debug] QUERY OK source="settings" db=0.1ms idle=103.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:05.782 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:05.783 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:05.783 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:05.784 [info] Sent 200 in 3ms 03:00:06.354 [info] GET /sources/6/media/42075 03:00:06.355 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42075", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 03:00:06.355 [debug] QUERY OK source="media_items" db=0.1ms idle=573.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" = ?) [42075] 03:00:06.356 [debug] QUERY OK source="tasks" db=0.1ms idle=573.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42075] 03:00:06.356 [debug] QUERY OK source="sources" db=0.2ms idle=573.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" = ?) [6] 03:00:06.356 [debug] QUERY OK source="settings" db=0.0ms idle=573.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:06.356 [debug] QUERY OK source="settings" db=0.0ms idle=573.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:06.356 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:06.357 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 03:00:06.358 [info] Sent 200 in 3ms 03:00:06.854 [info] GET /sources/4/media/50467 03:00:06.854 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50467", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 03:00:06.855 [debug] QUERY OK source="media_items" db=0.2ms idle=498.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" = ?) [50467] 03:00:06.855 [debug] QUERY OK source="sources" db=0.1ms idle=498.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:00:06.855 [debug] QUERY OK source="tasks" db=0.1ms idle=498.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50467] 03:00:06.855 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=498.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" = ?) [16328] 03:00:06.856 [debug] QUERY OK source="settings" db=0.0ms idle=176.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:06.856 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:06.856 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:06.856 [debug] QUERY OK source="media_profiles" db=0.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] 03:00:06.857 [info] Sent 200 in 3ms 03:00:07.358 [info] GET /sources/7/media/50089 03:00:07.359 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50089", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:07.359 [debug] QUERY OK source="media_items" db=0.1ms idle=503.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" = ?) [50089] 03:00:07.359 [debug] QUERY OK source="tasks" db=0.1ms idle=503.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50089] 03:00:07.360 [debug] QUERY OK source="sources" db=0.2ms idle=503.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] 03:00:07.360 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=503.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" = ?) [16252] 03:00:07.360 [debug] QUERY OK source="settings" db=0.0ms idle=503.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:07.360 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:07.361 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:07.361 [debug] QUERY OK source="media_profiles" db=0.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] 03:00:07.362 [info] Sent 200 in 3ms 03:00:07.854 [info] GET /sources/4/media/49630 03:00:07.855 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49630", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 03:00:07.855 [debug] QUERY OK source="media_items" db=0.2ms idle=494.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" = ?) [49630] 03:00:07.856 [debug] QUERY OK source="tasks" db=0.1ms idle=495.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49630] 03:00:07.856 [debug] QUERY OK source="sources" db=0.1ms idle=494.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" = ?) [4] 03:00:07.856 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=494.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16185] 03:00:07.856 [debug] QUERY OK source="settings" db=0.0ms idle=175.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:07.856 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:07.857 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:07.857 [debug] QUERY OK source="media_profiles" db=0.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] 03:00:07.858 [info] Sent 200 in 3ms 03:00:08.350 [info] GET /sources/7/media/32741 03:00:08.350 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32741", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:08.350 [debug] QUERY OK source="media_items" db=0.1ms idle=494.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" = ?) [32741] 03:00:08.351 [debug] QUERY OK source="sources" db=0.2ms idle=494.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] 03:00:08.351 [debug] QUERY OK source="tasks" db=0.3ms idle=494.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32741] 03:00:08.351 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=494.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15089, 15575, 16074] 03:00:08.352 [debug] QUERY OK source="settings" db=0.1ms idle=494.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:08.352 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:08.352 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:08.353 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:08.353 [info] Sent 200 in 3ms 03:00:08.854 [info] GET /sources/7/media/32687 03:00:08.854 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32687", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:08.855 [debug] QUERY OK source="media_items" db=0.2ms idle=502.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32687] 03:00:08.856 [debug] QUERY OK source="sources" db=0.2ms idle=503.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] 03:00:08.856 [debug] QUERY OK source="tasks" db=0.3ms idle=503.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32687] 03:00:08.856 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=503.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15088, 15574, 16073] 03:00:08.857 [debug] QUERY OK source="settings" db=0.0ms idle=175.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:08.857 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:08.857 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:08.858 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:00:08.858 [info] Sent 200 in 4ms 03:00:09.114 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:00:09.343 [info] GET /sources/7/media/49257 03:00:09.344 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49257", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:09.344 [debug] QUERY OK source="media_items" db=0.1ms idle=486.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" = ?) [49257] 03:00:09.344 [debug] QUERY OK source="tasks" db=0.1ms idle=487.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49257] 03:00:09.344 [debug] QUERY OK source="sources" db=0.2ms idle=486.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] 03:00:09.345 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=486.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 (?,?)) [16112, 16160] 03:00:09.345 [debug] QUERY OK source="settings" db=0.0ms idle=230.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:09.345 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:09.346 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:09.346 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:09.347 [info] Sent 200 in 3ms 03:00:09.850 [info] GET /sources/5/media/49366 03:00:09.850 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49366", "prevent_download" => "true", "source_id" => "5"} Pipelines: [:browser] 03:00:09.851 [debug] QUERY OK source="media_items" db=0.2ms idle=505.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" = ?) [49366] 03:00:09.851 [debug] QUERY OK source="tasks" db=0.1ms idle=505.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49366] 03:00:09.851 [debug] QUERY OK source="sources" db=0.2ms idle=505.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 03:00:09.851 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=505.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16125, 16192] 03:00:09.852 [debug] QUERY OK source="settings" db=0.0ms idle=169.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:09.852 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:09.852 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:09.853 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:09.854 [info] Sent 200 in 4ms 03:00:10.333 [info] GET /sources/6/media/43121 03:00:10.333 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "43121", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 03:00:10.333 [debug] QUERY OK source="media_items" db=0.2ms idle=481.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" = ?) [43121] 03:00:10.334 [debug] QUERY OK source="tasks" db=0.1ms idle=481.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [43121] 03:00:10.334 [debug] QUERY OK source="sources" db=0.1ms idle=481.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" = ?) [6] 03:00:10.334 [debug] QUERY OK source="settings" db=0.0ms idle=481.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:10.334 [debug] QUERY OK source="settings" db=0.0ms idle=481.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:10.335 [debug] QUERY OK source="settings" db=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 [] 03:00:10.335 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:10.336 [info] Sent 200 in 3ms 03:00:10.827 [info] GET /sources/6/media/47500 03:00:10.828 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47500", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 03:00:10.828 [debug] QUERY OK source="media_items" db=0.2ms idle=493.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [47500] 03:00:10.829 [debug] QUERY OK source="sources" db=0.1ms idle=493.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" = ?) [6] 03:00:10.829 [debug] QUERY OK source="tasks" db=0.3ms idle=494.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47500] 03:00:10.829 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=493.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15765] 03:00:10.829 [debug] QUERY OK source="settings" db=0.0ms idle=146.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:10.829 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:10.830 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:10.830 [debug] QUERY OK source="media_profiles" db=0.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] 03:00:10.831 [info] Sent 200 in 3ms 03:00:11.398 [info] GET /sources/4/media/50045 03:00:11.398 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50045", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 03:00:11.399 [debug] QUERY OK source="media_items" db=0.2ms idle=569.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" = ?) [50045] 03:00:11.399 [debug] QUERY OK source="tasks" db=0.1ms idle=569.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50045] 03:00:11.399 [debug] QUERY OK source="sources" db=0.2ms idle=569.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" = ?) [4] 03:00:11.400 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=569.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" = ?) [16247] 03:00:11.400 [debug] QUERY OK source="settings" db=0.1ms idle=569.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:11.400 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:11.400 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:11.401 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:11.402 [info] Sent 200 in 3ms 03:00:11.813 [info] GET /sources/6/media/47466 03:00:11.813 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47466", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 03:00:11.814 [debug] QUERY OK source="media_items" db=0.2ms idle=413.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [47466] 03:00:11.815 [debug] QUERY OK source="tasks" db=0.3ms idle=414.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47466] 03:00:11.815 [debug] QUERY OK source="sources" db=0.4ms idle=413.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" = ?) [6] 03:00:11.815 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=414.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [15764, 15950] 03:00:11.815 [debug] QUERY OK source="settings" db=0.0ms idle=131.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:11.815 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:11.816 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:11.816 [debug] QUERY OK source="media_profiles" db=0.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] 03:00:11.817 [info] Sent 200 in 3ms 03:00:12.351 [info] GET /sources/4/media/49424 03:00:12.351 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49424", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 03:00:12.352 [debug] QUERY OK source="media_items" db=0.2ms queue=0.2ms idle=536.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [49424] 03:00:12.352 [debug] QUERY OK source="tasks" db=0.1ms idle=536.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49424] 03:00:12.352 [debug] QUERY OK source="sources" db=0.1ms idle=536.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" = ?) [4] 03:00:12.353 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=536.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16151] 03:00:12.353 [debug] QUERY OK source="settings" db=0.0ms idle=536.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:12.353 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:12.354 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:12.354 [debug] QUERY OK source="media_profiles" db=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] 03:00:12.355 [info] Sent 200 in 3ms 03:00:12.854 [info] GET /sources/7/media/50510 03:00:12.854 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50510", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:12.855 [debug] QUERY OK source="media_items" db=0.2ms idle=501.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" = ?) [50510] 03:00:12.855 [debug] QUERY OK source="tasks" db=0.1ms idle=501.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50510] 03:00:12.855 [debug] QUERY OK source="sources" db=0.1ms idle=501.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] 03:00:12.855 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=501.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16330] 03:00:12.856 [debug] QUERY OK source="settings" db=0.0ms idle=170.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:12.856 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:12.856 [debug] QUERY OK source="settings" db=0.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:12.857 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 03:00:12.857 [info] Sent 200 in 3ms 03:00:13.353 [info] GET /sources/7/media/50511 03:00:13.353 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50511", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:13.354 [debug] QUERY OK source="media_items" db=0.2ms idle=498.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" = ?) [50511] 03:00:13.354 [debug] QUERY OK source="tasks" db=0.1ms idle=498.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50511] 03:00:13.354 [debug] QUERY OK source="sources" db=0.2ms idle=498.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] 03:00:13.354 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=498.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16331] 03:00:13.355 [debug] QUERY OK source="settings" db=0.0ms idle=498.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:13.355 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:13.355 [debug] QUERY OK source="settings" db=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 [] 03:00:13.356 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:13.357 [info] Sent 200 in 3ms 03:00:13.813 [info] GET /sources/6/media/48483 03:00:13.814 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48483", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 03:00:13.814 [debug] QUERY OK source="media_items" db=0.2ms idle=459.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" = ?) [48483] 03:00:13.815 [debug] QUERY OK source="tasks" db=0.2ms idle=459.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48483] 03:00:13.815 [debug] QUERY OK source="sources" db=0.3ms idle=459.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" = ?) [6] 03:00:13.815 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=459.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [15945, 15984] 03:00:13.815 [debug] QUERY OK source="settings" db=0.0ms idle=129.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:13.815 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:13.816 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:13.816 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:13.817 [info] Sent 200 in 3ms 03:00:14.313 [info] GET /sources/7/media/50087 03:00:14.314 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50087", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:14.314 [debug] QUERY OK source="media_items" db=0.2ms idle=498.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" = ?) [50087] 03:00:14.314 [debug] QUERY OK source="tasks" db=0.1ms idle=498.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50087] 03:00:14.314 [debug] QUERY OK source="sources" db=0.2ms idle=498.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] 03:00:14.315 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=498.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" = ?) [16250] 03:00:14.315 [debug] QUERY OK source="settings" db=0.0ms idle=498.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:14.315 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:14.315 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:14.316 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 03:00:14.317 [info] Sent 200 in 3ms 03:00:14.855 [info] GET /sources/5/media/50203 03:00:14.855 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50203", "prevent_download" => "true", "source_id" => "5"} Pipelines: [:browser] 03:00:14.856 [debug] QUERY OK source="media_items" db=0.3ms idle=540.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50203] 03:00:14.856 [debug] QUERY OK source="tasks" db=0.1ms idle=541.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50203] 03:00:14.856 [debug] QUERY OK source="sources" db=0.1ms idle=540.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 03:00:14.857 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=540.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" = ?) [16259] 03:00:14.857 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:14.857 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:14.857 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:14.858 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:14.859 [info] Sent 200 in 3ms 03:00:15.343 [info] GET /sources/3/media/48347 03:00:15.344 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48347", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 03:00:15.344 [debug] QUERY OK source="media_items" db=0.2ms idle=487.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" = ?) [48347] 03:00:15.344 [debug] QUERY OK source="tasks" db=0.1ms idle=487.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48347] 03:00:15.345 [debug] QUERY OK source="sources" db=0.2ms idle=487.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:15.345 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=487.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15937] 03:00:15.345 [debug] QUERY OK source="settings" db=0.0ms idle=487.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:15.345 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:15.346 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:15.346 [debug] QUERY OK source="media_profiles" db=0.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] 03:00:15.347 [info] Sent 200 in 3ms 03:00:15.858 [info] GET /sources/3/media/47311 03:00:15.858 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47311", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 03:00:15.858 [debug] QUERY OK source="media_items" db=0.2ms idle=512.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" = ?) [47311] 03:00:15.859 [debug] QUERY OK source="tasks" db=0.2ms idle=513.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47311] 03:00:15.859 [debug] QUERY OK source="sources" db=0.2ms idle=513.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:15.859 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=513.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?,?,?,?,?,?,?,?)) [15755, 16007, 16044, 16109, 16149, 16183, 16214, 16245, 16287, 16325] 03:00:15.860 [debug] QUERY OK source="settings" db=0.0ms idle=171.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:15.860 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:15.860 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:15.861 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:15.861 [info] Sent 200 in 3ms 03:00:16.374 [info] GET /sources/7/media/50088 03:00:16.374 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50088", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:16.374 [debug] QUERY OK source="media_items" db=0.2ms 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 WHERE (m0."id" = ?) [50088] 03:00:16.375 [debug] QUERY OK source="tasks" db=0.2ms idle=514.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50088] 03:00:16.375 [debug] QUERY OK source="sources" db=0.2ms idle=514.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:00:16.375 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=514.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16251] 03:00:16.375 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:16.375 [debug] QUERY OK source="settings" db=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 [] 03:00:16.376 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:16.376 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:16.377 [info] Sent 200 in 3ms 03:00:16.845 [info] GET /sources/7/media/32627 03:00:16.845 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32627", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:16.845 [debug] QUERY OK source="media_items" db=0.2ms idle=469.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" = ?) [32627] 03:00:16.846 [debug] QUERY OK source="tasks" db=0.1ms idle=470.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32627] 03:00:16.846 [debug] QUERY OK source="sources" db=0.2ms idle=469.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] 03:00:16.846 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=469.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15065, 15556, 16056] 03:00:16.847 [debug] QUERY OK source="settings" db=0.0ms idle=157.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:16.847 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:16.847 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:16.848 [debug] QUERY OK source="media_profiles" db=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] 03:00:16.849 [info] Sent 200 in 4ms 03:00:17.318 [info] GET /sources/7/media/50300 03:00:17.318 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50300", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:17.319 [debug] QUERY OK source="media_items" db=0.1ms idle=472.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50300] 03:00:17.319 [debug] QUERY OK source="sources" db=0.1ms idle=472.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] 03:00:17.319 [debug] QUERY OK source="tasks" db=0.2ms idle=472.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50300] 03:00:17.320 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=472.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16291] 03:00:17.320 [debug] QUERY OK source="settings" db=0.1ms idle=471.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:17.320 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:17.320 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:17.321 [debug] QUERY OK source="media_profiles" db=0.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] 03:00:17.322 [info] Sent 200 in 3ms 03:00:17.859 [info] GET /sources/4/media/48798 03:00:17.859 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48798", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 03:00:17.859 [debug] QUERY OK source="media_items" db=0.3ms idle=539.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" = ?) [48798] 03:00:17.860 [debug] QUERY OK source="tasks" db=0.1ms idle=539.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48798] 03:00:17.860 [debug] QUERY OK source="sources" db=0.3ms idle=539.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" = ?) [4] 03:00:17.860 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=539.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" = ?) [16009] 03:00:17.861 [debug] QUERY OK source="settings" db=0.1ms idle=170.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:17.861 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:17.861 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:17.862 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:00:17.863 [info] Sent 200 in 4ms 03:00:18.314 [info] GET /sources/4/media/49006 03:00:18.314 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49006", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 03:00:18.315 [debug] QUERY OK source="media_items" db=0.3ms idle=453.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" = ?) [49006] 03:00:18.315 [debug] QUERY OK source="tasks" db=0.1ms idle=454.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49006] 03:00:18.315 [debug] QUERY OK source="sources" db=0.2ms idle=453.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" = ?) [4] 03:00:18.315 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=453.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16046] 03:00:18.316 [debug] QUERY OK source="settings" db=0.1ms idle=453.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:18.316 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:18.316 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:18.317 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:18.317 [info] Sent 200 in 3ms 03:00:18.837 [info] GET /sources/7/media/49878 03:00:18.837 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49878", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:18.837 [debug] QUERY OK source="media_items" db=0.2ms idle=521.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" = ?) [49878] 03:00:18.838 [debug] QUERY OK source="tasks" db=0.1ms idle=521.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49878] 03:00:18.838 [debug] QUERY OK source="sources" db=0.2ms idle=521.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] 03:00:18.838 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=521.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16218] 03:00:18.838 [debug] QUERY OK source="settings" db=0.0ms idle=147.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:18.839 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:18.839 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:18.839 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:18.840 [info] Sent 200 in 3ms 03:00:19.355 [info] GET /sources/5/media/42549 03:00:19.355 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42549", "prevent_download" => "true", "source_id" => "5"} Pipelines: [:browser] 03:00:19.356 [debug] QUERY OK source="media_items" db=0.2ms idle=517.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" = ?) [42549] 03:00:19.356 [debug] QUERY OK source="tasks" db=0.1ms idle=517.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42549] 03:00:19.356 [debug] QUERY OK source="sources" db=0.2ms idle=517.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 03:00:19.357 [debug] QUERY OK source="settings" db=0.1ms idle=517.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:19.357 [debug] QUERY OK source="settings" db=0.1ms idle=517.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:19.357 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:19.358 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:00:19.360 [info] Sent 200 in 4ms 03:00:19.855 [info] GET /sources/7/media/49047 03:00:19.855 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49047", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:19.856 [debug] QUERY OK source="media_items" db=0.3ms idle=498.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" = ?) [49047] 03:00:19.856 [debug] QUERY OK source="tasks" db=0.1ms idle=498.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49047] 03:00:19.856 [debug] QUERY OK source="sources" db=0.2ms idle=498.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:00:19.856 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=498.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16048, 16123] 03:00:19.857 [debug] QUERY OK source="settings" db=0.0ms idle=164.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:19.857 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:19.857 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:19.857 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:19.858 [info] Sent 200 in 3ms 03:00:20.344 [info] GET /sources/7/media/32633 03:00:20.345 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32633", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 03:00:20.345 [debug] QUERY OK source="media_items" db=0.2ms idle=488.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" = ?) [32633] 03:00:20.346 [debug] QUERY OK source="tasks" db=0.1ms idle=488.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32633] 03:00:20.346 [debug] QUERY OK source="sources" db=0.2ms idle=488.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] 03:00:20.346 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=488.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 (?,?,?)) [15067, 15558, 16058] 03:00:20.346 [debug] QUERY OK source="settings" db=0.0ms idle=488.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:20.347 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:20.347 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:20.347 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:20.348 [info] Sent 200 in 3ms 03:00:20.833 [info] GET /media/0e834332-846c-4ddf-ab94-1f2c5129694a/stream 03:00:20.833 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "0e834332-846c-4ddf-ab94-1f2c5129694a", "v" => "1788748887"} Pipelines: [:maybe_basic_auth] 03:00:20.834 [debug] QUERY OK source="media_items" db=0.3ms idle=487.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["0e834332-846c-4ddf-ab94-1f2c5129694a"] 03:00:20.834 [debug] Invalid range request for media item: 0e834332-846c-4ddf-ab94-1f2c5129694a - serving full file 03:00:20.834 [info] Sent 200 in 895µs 03:00:31.554 [info] GET /media/0960ec13-ae33-4213-a3db-dc3887f3496e/stream 03:00:31.554 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "0960ec13-ae33-4213-a3db-dc3887f3496e", "v" => "1792033485"} Pipelines: [:maybe_basic_auth] 03:00:31.555 [debug] QUERY OK source="media_items" db=0.3ms idle=677.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["0960ec13-ae33-4213-a3db-dc3887f3496e"] 03:00:31.555 [debug] Invalid range request for media item: 0960ec13-ae33-4213-a3db-dc3887f3496e - serving full file 03:00:31.555 [info] Sent 200 in 1ms 03:00:39.116 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:00:48.540 [info] GET /media/6664c1c1-9709-47a8-8506-f8dae6e0d40a/stream 03:00:48.540 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "6664c1c1-9709-47a8-8506-f8dae6e0d40a", "v" => "1791338423"} Pipelines: [:maybe_basic_auth] 03:00:48.541 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=1448.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["6664c1c1-9709-47a8-8506-f8dae6e0d40a"] 03:00:48.541 [debug] Invalid range request for media item: 6664c1c1-9709-47a8-8506-f8dae6e0d40a - serving full file 03:00:48.541 [info] Sent 200 in 961µs 03:00:48.913 [info] {"args":{"id":3},"id":16326,"meta":{},"system_time":1792292448913342566,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:00:48.914 [debug] QUERY OK source="sources" db=1.2ms idle=1820.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:48.915 [debug] QUERY OK source="settings" db=0.3ms idle=1009.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:00:48.919 [debug] QUERY OK source="media_items" db=3.8ms idle=374.3ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 03:00:48.921 [debug] QUERY OK source="media_items" db=1.9ms idle=13.0ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 03:00:48.922 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.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] 03:00:48.922 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:48.922 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:48.925 [debug] QUERY OK source="media_items" db=1.5ms 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."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [3] 03:00:48.926 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 03:00:48.926 [debug] Current batch of media processed. Will check again in 1000ms 03:00:48.926 [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 [] 03:00:48.926 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:48.926 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:00:48.926 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@%EC%96%B4%ED%8D%BC%EC%BB%B7 --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/어퍼컷Tube/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/59/9d/599d09da79f2434df72ec9822f8adfb947d9bc66fc17d8f811e7d8832aa30577.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a6/73/a6738a668ca532b2ef9df4fdbebd3e95c46bdd6a2363498c1e85fb3cb05f9afc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:00:49.927 [debug] Current batch of media processed. Will check again in 1000ms 03:00:50.927 [debug] Current batch of media processed. Will check again in 1000ms 03:00:51.928 [debug] Current batch of media processed. Will check again in 1000ms 03:00:52.930 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#암지아킹의라이벌들 #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임. \n\n바로가기 링크\nhttps://bit.ly/4zqtvir\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 2599, "filename" => "/downloads/어퍼컷Tube/2026-10-17 단 "43 분",,, 진짜 미치도록 재밌습니다/단 "43 분",,, 진짜 미치도록 재밌습니다 [gdhre42GGbk].mkv", "id" => "gdhre42GGbk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gdhre42GGbk", "playlist_index" => 1, "timestamp" => 1792195244, "title" => "단 \"43 분\",,, 진짜 미치도록 재밌습니다", "upload_date" => "20261017"} 03:00:52.930 [debug] QUERY OK source="sources" db=0.2ms idle=837.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:00:52.931 [debug] QUERY OK source="sources" db=0.1ms idle=838.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:52.932 [debug] QUERY OK source="media_items" db=1.2ms idle=838.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-17 00:00:44Z], 3] 03:00:52.933 [debug] QUERY OK source="media_items" db=0.8ms idle=839.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#암지아킹의라이벌들 #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임. \n\n바로가기 링크\nhttps://bit.ly/4zqtvir\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "단 \"43 분\",,, 진짜 미치도록 재밌습니다", "f68317f8-8ee1-44ae-8451-12b267623e70", false, 2599, false, "gdhre42GGbk", "https://www.youtube.com/watch?v=gdhre42GGbk", 1, "/downloads/어퍼컷Tube/2026-10-17 단 "43 분",,, 진짜 미치도록 재밌습니다/단 "43 분",,, 진짜 미치도록 재밌습니다 [gdhre42GGbk].mkv", false, false, 3, [], 97, ~U[2026-10-17 00:00:44Z], ~U[2026-10-18 03:00:52Z], ~U[2026-10-18 03:00:52Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#암지아킹의라이벌들 #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임. \n\n바로가기 링크\nhttps://bit.ly/4zqtvir\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "단 \"43 분\",,, 진짜 미치도록 재밌습니다", 2599, false, "gdhre42GGbk", "https://www.youtube.com/watch?v=gdhre42GGbk", "/downloads/어퍼컷Tube/2026-10-17 단 "43 분",,, 진짜 미치도록 재밌습니다/단 "43 분",,, 진짜 미치도록 재밌습니다 [gdhre42GGbk].mkv", false, 3, ~U[2026-10-17 00:00:44Z]] 03:00:52.934 [debug] QUERY OK source="sources" db=0.3ms idle=22.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" = ?) [3] 03:00:52.934 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:52.935 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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 [49182] 03:00:52.935 [debug] Current batch of media processed. Will check again in 1000ms 03:00:53.936 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#캐리 #아마존프라임 #어퍼컷Tube\n《캐리》 1-2화 리뷰입니다 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《캐리》\n\n바로가기 링크\nhttps://bit.ly/4jQDklc\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 3034, "filename" => "/downloads/어퍼컷Tube/2026-10-10 기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???/기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고??? [5k3SLUzvWdU].mkv", "id" => "5k3SLUzvWdU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=5k3SLUzvWdU", "playlist_index" => 2, "timestamp" => 1791626437, "title" => "기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???", "upload_date" => "20261010"} 03:00:53.936 [debug] QUERY OK source="sources" db=0.3ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:00:53.937 [debug] QUERY OK source="sources" db=0.1ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:53.938 [debug] QUERY OK source="media_items" db=1.1ms idle=1002.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 10:00:37Z], 3] 03:00:53.939 [debug] QUERY OK source="media_items" db=0.5ms idle=1003.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#캐리 #아마존프라임 #어퍼컷Tube\n《캐리》 1-2화 리뷰입니다 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《캐리》\n\n바로가기 링크\nhttps://bit.ly/4jQDklc\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???", "fc0c8015-6f42-48ea-b240-39c7052c015c", false, 3034, false, "5k3SLUzvWdU", "https://www.youtube.com/watch?v=5k3SLUzvWdU", 2, "/downloads/어퍼컷Tube/2026-10-10 기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???/기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고??? [5k3SLUzvWdU].mkv", false, false, 3, [], 98, ~U[2026-10-10 10:00:37Z], ~U[2026-10-18 03:00:53Z], ~U[2026-10-18 03:00:53Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#캐리 #아마존프라임 #어퍼컷Tube\n《캐리》 1-2화 리뷰입니다 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《캐리》\n\n바로가기 링크\nhttps://bit.ly/4jQDklc\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???", 3034, false, "5k3SLUzvWdU", "https://www.youtube.com/watch?v=5k3SLUzvWdU", "/downloads/어퍼컷Tube/2026-10-10 기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???/기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고??? [5k3SLUzvWdU].mkv", false, 3, ~U[2026-10-10 10:00:37Z]] 03:00:53.939 [debug] QUERY OK source="sources" db=0.1ms idle=26.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:53.939 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:00:53.940 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [48970] 03:00:53.940 [debug] Current batch of media processed. Will check again in 1000ms 03:00:54.940 [debug] Current batch of media processed. Will check again in 1000ms 03:00:55.942 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#니글리 #아마존프라임, #어퍼컷Tube\n《니글리》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《니글리》\n\n바로가기 링크\nhttps://bit.ly/4rGiQO5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 7863, "filename" => "/downloads/어퍼컷Tube/2026-10-09 나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단/나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단 [IQ2aGRwdzWY].mkv", "id" => "IQ2aGRwdzWY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=IQ2aGRwdzWY", "playlist_index" => 3, "timestamp" => 1791540006, "title" => "나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단", "upload_date" => "20261009"} 03:00:55.942 [debug] QUERY OK source="sources" db=0.4ms idle=849.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:00:55.943 [debug] QUERY OK source="sources" db=0.1ms idle=849.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:55.944 [debug] QUERY OK source="media_items" db=1.5ms idle=850.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 10:00:06Z], 3] 03:00:55.993 [debug] QUERY OK source="media_items" db=48.5ms idle=852.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#니글리 #아마존프라임, #어퍼컷Tube\n《니글리》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《니글리》\n\n바로가기 링크\nhttps://bit.ly/4rGiQO5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단", "3213c6ce-1d7d-43b8-b896-93eae16ae0e1", false, 7863, false, "IQ2aGRwdzWY", "https://www.youtube.com/watch?v=IQ2aGRwdzWY", 3, "/downloads/어퍼컷Tube/2026-10-09 나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단/나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단 [IQ2aGRwdzWY].mkv", false, false, 3, [], 98, ~U[2026-10-09 10:00:06Z], ~U[2026-10-18 03:00:55Z], ~U[2026-10-18 03:00:55Z], "* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#니글리 #아마존프라임, #어퍼컷Tube\n《니글리》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《니글리》\n\n바로가기 링크\nhttps://bit.ly/4rGiQO5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단", 7863, false, "IQ2aGRwdzWY", "https://www.youtube.com/watch?v=IQ2aGRwdzWY", "/downloads/어퍼컷Tube/2026-10-09 나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단/나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단 [IQ2aGRwdzWY].mkv", false, 3, ~U[2026-10-09 10:00:06Z]] 03:00:55.994 [debug] QUERY OK source="sources" db=0.2ms idle=78.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" = ?) [3] 03:00:55.994 [debug] QUERY OK source="media_profiles" db=0.1ms idle=51.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] 03:00:55.995 [debug] QUERY OK source="media_items" db=0.1ms idle=51.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 [48347] 03:00:55.995 [debug] Current batch of media processed. Will check again in 1000ms 03:00:56.995 [debug] Current batch of media processed. Will check again in 1000ms 03:00:57.997 [debug] FileFollowerServer Handler: Got media attributes: %{"description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#X #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 \n\n바로가기 링크\nhttps://bit.ly/3Vp8NB5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 2668, "filename" => "/downloads/어퍼컷Tube/2026-10-05 미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화/미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화 [17ZuKHdQiow].NA", "id" => "17ZuKHdQiow", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=17ZuKHdQiow", "playlist_index" => 4, "timestamp" => 1791158404, "title" => "미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화", "upload_date" => "20261005"} 03:00:57.997 [debug] QUERY OK source="sources" db=0.1ms idle=904.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:00:57.997 [debug] QUERY OK source="sources" db=0.0ms idle=904.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:57.999 [debug] QUERY OK source="media_items" db=1.1ms idle=904.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 00:00:04Z], 3] 03:00:58.624 [debug] QUERY OK source="media_items" db=624.5ms idle=906.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#X #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 \n\n바로가기 링크\nhttps://bit.ly/3Vp8NB5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화", "a708c196-cd33-484e-84dd-adb6f2a81e6a", false, 2668, false, "17ZuKHdQiow", "https://www.youtube.com/watch?v=17ZuKHdQiow", 4, "/downloads/어퍼컷Tube/2026-10-05 미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화/미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화 [17ZuKHdQiow].NA", false, false, 3, [], 98, ~U[2026-10-05 00:00:04Z], ~U[2026-10-18 03:00:57Z], ~U[2026-10-18 03:00:57Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#X #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 \n\n바로가기 링크\nhttps://bit.ly/3Vp8NB5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화", 2668, false, "17ZuKHdQiow", "https://www.youtube.com/watch?v=17ZuKHdQiow", "/downloads/어퍼컷Tube/2026-10-05 미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화/미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화 [17ZuKHdQiow].NA", false, 3, ~U[2026-10-05 00:00:04Z]] 03:00:58.624 [debug] QUERY OK source="sources" db=0.4ms idle=705.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:58.625 [debug] QUERY OK source="media_profiles" db=0.2ms idle=627.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] 03:00:58.625 [debug] QUERY OK source="media_items" db=0.1ms idle=627.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 [47935] 03:00:58.625 [debug] Current batch of media processed. Will check again in 1000ms 03:00:59.626 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#스타트업 #넷플릭스 #어퍼컷Tube\n《스타트업》 시즌1은 넷플릭스에서 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4yWjUjm\n\n출처: 《스타트업》 시즌1\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 8866, "filename" => "/downloads/어퍼컷Tube/2026-10-04 넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마/넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마 [avbqlPLQdjY].mp4", "id" => "avbqlPLQdjY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=avbqlPLQdjY", "playlist_index" => 5, "timestamp" => 1791109046, "title" => "넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마", "upload_date" => "20261004"} 03:00:59.626 [debug] QUERY OK source="sources" db=0.2ms idle=1002.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:00:59.626 [debug] QUERY OK source="sources" db=0.0ms idle=1002.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:59.628 [debug] QUERY OK source="media_items" db=1.0ms idle=1001.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 10:17:26Z], 3] 03:00:59.804 [debug] QUERY OK source="media_items" db=175.6ms idle=1002.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#스타트업 #넷플릭스 #어퍼컷Tube\n《스타트업》 시즌1은 넷플릭스에서 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4yWjUjm\n\n출처: 《스타트업》 시즌1\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마", "de57da07-9606-4385-a855-915b7450cb4d", false, 8866, false, "avbqlPLQdjY", "https://www.youtube.com/watch?v=avbqlPLQdjY", 5, "/downloads/어퍼컷Tube/2026-10-04 넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마/넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마 [avbqlPLQdjY].mp4", false, false, 3, [], 98, ~U[2026-10-04 10:17:26Z], ~U[2026-10-18 03:00:59Z], ~U[2026-10-18 03:00:59Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#스타트업 #넷플릭스 #어퍼컷Tube\n《스타트업》 시즌1은 넷플릭스에서 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4yWjUjm\n\n출처: 《스타트업》 시즌1\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마", 8866, false, "avbqlPLQdjY", "https://www.youtube.com/watch?v=avbqlPLQdjY", "/downloads/어퍼컷Tube/2026-10-04 넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마/넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마 [avbqlPLQdjY].mp4", false, 3, ~U[2026-10-04 10:17:26Z]] 03:00:59.804 [debug] QUERY OK source="sources" db=0.3ms idle=883.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:00:59.805 [debug] QUERY OK source="media_profiles" db=0.2ms idle=178.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] 03:00:59.805 [debug] QUERY OK source="media_items" db=0.1ms idle=178.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 [45648] 03:00:59.805 [debug] Current batch of media processed. Will check again in 1000ms 03:01:00.321 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:01:00.805 [debug] Current batch of media processed. Will check again in 1000ms 03:01:01.807 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r7_Tube\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#,토니 #아마존프라임, #어퍼컷Tube\n《토니 2026》는 프라임 비디오에서 개별 구매로 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4hbQaJn\n\n출처: 《토니 2026》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 2648, "filename" => "/downloads/어퍼컷Tube/2026-09-26 (한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요/(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요 [nq-Ev_eTAgY].mkv", "id" => "nq-Ev_eTAgY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=nq-Ev_eTAgY", "playlist_index" => 6, "timestamp" => 1790416831, "title" => "(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요", "upload_date" => "20260926"} 03:01:01.807 [debug] QUERY OK source="sources" db=0.2ms idle=1486.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:01.808 [debug] QUERY OK source="sources" db=0.1ms idle=883.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:01.809 [debug] QUERY OK source="media_items" db=1.1ms idle=715.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-26 10:00:31Z], 3] 03:01:01.810 [debug] QUERY OK source="media_items" db=0.6ms idle=716.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r7_Tube\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#,토니 #아마존프라임, #어퍼컷Tube\n《토니 2026》는 프라임 비디오에서 개별 구매로 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4hbQaJn\n\n출처: 《토니 2026》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요", "fb0337ce-6919-47a0-bcb5-4430a0b440d9", false, 2648, false, "nq-Ev_eTAgY", "https://www.youtube.com/watch?v=nq-Ev_eTAgY", 6, "/downloads/어퍼컷Tube/2026-09-26 (한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요/(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요 [nq-Ev_eTAgY].mkv", false, false, 3, [], 98, ~U[2026-09-26 10:00:31Z], ~U[2026-10-18 03:01:01Z], ~U[2026-10-18 03:01:01Z], "*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r7_Tube\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#,토니 #아마존프라임, #어퍼컷Tube\n《토니 2026》는 프라임 비디오에서 개별 구매로 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4hbQaJn\n\n출처: 《토니 2026》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요", 2648, false, "nq-Ev_eTAgY", "https://www.youtube.com/watch?v=nq-Ev_eTAgY", "/downloads/어퍼컷Tube/2026-09-26 (한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요/(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요 [nq-Ev_eTAgY].mkv", false, 3, ~U[2026-09-26 10:00:31Z]] 03:01:01.810 [debug] QUERY OK source="sources" db=0.1ms idle=717.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:01.810 [debug] QUERY OK source="media_profiles" db=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] 03:01:01.811 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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 [45854] 03:01:01.811 [debug] Current batch of media processed. Will check again in 1000ms 03:01:02.812 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n*[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n00:00 《스털링 포인트》 1부\n53:45 《스털링 포인트》 2부\n\n#스털링포인트, #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 7326, "filename" => "/downloads/어퍼컷Tube/2026-09-24 점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드/점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드 [3IXgfeWqGOE].mkv", "id" => "3IXgfeWqGOE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=3IXgfeWqGOE", "playlist_index" => 7, "timestamp" => 1790244032, "title" => "점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드", "upload_date" => "20260924"} 03:01:02.812 [debug] QUERY OK source="sources" db=0.1ms idle=1002.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:02.813 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:01:02.814 [debug] QUERY OK source="media_items" db=1.2ms idle=1002.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-24 10:00:32Z], 3] 03:01:02.815 [debug] QUERY OK source="media_items" db=0.5ms idle=1003.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n*[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n00:00 《스털링 포인트》 1부\n53:45 《스털링 포인트》 2부\n\n#스털링포인트, #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드", "72b56839-c183-4c97-adf8-6ddaa169fe7e", false, 7326, false, "3IXgfeWqGOE", "https://www.youtube.com/watch?v=3IXgfeWqGOE", 7, "/downloads/어퍼컷Tube/2026-09-24 점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드/점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드 [3IXgfeWqGOE].mkv", false, false, 3, [], 98, ~U[2026-09-24 10:00:32Z], ~U[2026-10-18 03:01:02Z], ~U[2026-10-18 03:01:02Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n*[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n00:00 《스털링 포인트》 1부\n53:45 《스털링 포인트》 2부\n\n#스털링포인트, #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드", 7326, false, "3IXgfeWqGOE", "https://www.youtube.com/watch?v=3IXgfeWqGOE", "/downloads/어퍼컷Tube/2026-09-24 점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드/점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드 [3IXgfeWqGOE].mkv", false, 3, ~U[2026-09-24 10:00:32Z]] 03:01:02.815 [debug] QUERY OK source="sources" db=0.1ms idle=889.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:02.815 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:02.816 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [42079] 03:01:02.816 [debug] Current batch of media processed. Will check again in 1000ms 03:01:03.816 [debug] Current batch of media processed. Will check again in 1000ms 03:01:04.818 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#테드래소 #애플티비 #어퍼컷Tube\n\n《테드래소》 시즌4는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4AlO8xK\n\n출처: 애플티비 《테드 래소 시즌4》 1-3화\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 1990, "filename" => "/downloads/어퍼컷Tube/2026-09-22 축구에서 감독이 중요한 이유/축구에서 감독이 중요한 이유 [nvTgga0dIKo].mkv", "id" => "nvTgga0dIKo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=nvTgga0dIKo", "playlist_index" => 8, "timestamp" => 1790071225, "title" => "축구에서 감독이 중요한 이유", "upload_date" => "20260922"} 03:01:04.818 [debug] QUERY OK source="sources" db=0.1ms idle=890.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:04.819 [debug] QUERY OK source="sources" db=0.1ms idle=725.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] 03:01:04.820 [debug] QUERY OK source="media_items" db=1.0ms idle=726.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-22 10:00:25Z], 3] 03:01:04.821 [debug] QUERY OK source="media_items" db=0.5ms idle=727.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#테드래소 #애플티비 #어퍼컷Tube\n\n《테드래소》 시즌4는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4AlO8xK\n\n출처: 애플티비 《테드 래소 시즌4》 1-3화\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "축구에서 감독이 중요한 이유", "1e43921c-7ef9-445a-80b4-ed6738fd9397", false, 1990, false, "nvTgga0dIKo", "https://www.youtube.com/watch?v=nvTgga0dIKo", 8, "/downloads/어퍼컷Tube/2026-09-22 축구에서 감독이 중요한 이유/축구에서 감독이 중요한 이유 [nvTgga0dIKo].mkv", false, false, 3, [], 97, ~U[2026-09-22 10:00:25Z], ~U[2026-10-18 03:01:04Z], ~U[2026-10-18 03:01:04Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#테드래소 #애플티비 #어퍼컷Tube\n\n《테드래소》 시즌4는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4AlO8xK\n\n출처: 애플티비 《테드 래소 시즌4》 1-3화\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "축구에서 감독이 중요한 이유", 1990, false, "nvTgga0dIKo", "https://www.youtube.com/watch?v=nvTgga0dIKo", "/downloads/어퍼컷Tube/2026-09-22 축구에서 감독이 중요한 이유/축구에서 감독이 중요한 이유 [nvTgga0dIKo].mkv", false, 3, ~U[2026-09-22 10:00:25Z]] 03:01:04.821 [debug] QUERY OK source="sources" db=0.1ms idle=728.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:04.821 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:04.821 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [44634] 03:01:04.821 [debug] Current batch of media processed. Will check again in 1000ms 03:01:05.822 [debug] Current batch of media processed. Will check again in 1000ms 03:01:06.824 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join\n\n00:00 《리처 시즌4》 1-3화\n01:06:07 《리처 시즌4》 4화\n01:27:04 《리처 시즌4》 5화\n01:43:52 《리처 시즌4》 6화\n01:53:36 《리처 시즌4》 7화\n02:06:26 《리처 시즌4》 8화", "duration" => 8740, "filename" => "/downloads/어퍼컷Tube/2026-09-19 하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기/하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기 [uT_G6GovHdw].mkv", "id" => "uT_G6GovHdw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uT_G6GovHdw", "playlist_index" => 9, "timestamp" => 1789777489, "title" => "하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기", "upload_date" => "20260919"} 03:01:06.824 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=894.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:06.825 [debug] QUERY OK source="sources" db=0.0ms idle=732.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:06.826 [debug] QUERY OK source="media_items" db=1.1ms idle=732.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-19 00:24:49Z], 3] 03:01:06.827 [debug] QUERY OK source="media_items" db=0.7ms idle=733.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join\n\n00:00 《리처 시즌4》 1-3화\n01:06:07 《리처 시즌4》 4화\n01:27:04 《리처 시즌4》 5화\n01:43:52 《리처 시즌4》 6화\n01:53:36 《리처 시즌4》 7화\n02:06:26 《리처 시즌4》 8화", "하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기", "9a30def6-6636-474e-9cdb-42dd2b39a6b4", false, 8740, false, "uT_G6GovHdw", "https://www.youtube.com/watch?v=uT_G6GovHdw", 9, "/downloads/어퍼컷Tube/2026-09-19 하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기/하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기 [uT_G6GovHdw].mkv", false, false, 3, [], 98, ~U[2026-09-19 00:24:49Z], ~U[2026-10-18 03:01:06Z], ~U[2026-10-18 03:01:06Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join\n\n00:00 《리처 시즌4》 1-3화\n01:06:07 《리처 시즌4》 4화\n01:27:04 《리처 시즌4》 5화\n01:43:52 《리처 시즌4》 6화\n01:53:36 《리처 시즌4》 7화\n02:06:26 《리처 시즌4》 8화", "하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기", 8740, false, "uT_G6GovHdw", "https://www.youtube.com/watch?v=uT_G6GovHdw", "/downloads/어퍼컷Tube/2026-09-19 하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기/하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기 [uT_G6GovHdw].mkv", false, 3, ~U[2026-09-19 00:24:49Z]] 03:01:06.828 [debug] QUERY OK source="sources" db=0.1ms idle=734.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:06.828 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:06.828 [debug] QUERY OK source="media_items" db=0.1ms idle=3.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [44631] 03:01:06.828 [debug] Current batch of media processed. Will check again in 1000ms 03:01:07.829 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#메이데이 #애플티비 #어퍼컷Tube\n《메이 데이 2026》는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4h1eVqg\n\n출처: 애플티비 《메이 데이 2026》\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 1280, "filename" => "/downloads/어퍼컷Tube/2026-09-18 이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?/이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까? [OGv2pefRfsI].mkv", "id" => "OGv2pefRfsI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OGv2pefRfsI", "playlist_index" => 10, "timestamp" => 1789725630, "title" => "이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?", "upload_date" => "20260918"} 03:01:07.829 [debug] QUERY OK source="sources" db=0.1ms idle=1001.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:07.830 [debug] QUERY OK source="sources" db=0.0ms idle=1001.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] 03:01:07.831 [debug] QUERY OK source="media_items" db=1.0ms idle=1001.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-18 10:00:30Z], 3] 03:01:07.831 [debug] QUERY OK source="media_items" db=0.4ms idle=1002.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#메이데이 #애플티비 #어퍼컷Tube\n《메이 데이 2026》는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4h1eVqg\n\n출처: 애플티비 《메이 데이 2026》\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?", "6d405bcd-5b4c-46ca-b4cc-57d3e3453acc", false, 1280, false, "OGv2pefRfsI", "https://www.youtube.com/watch?v=OGv2pefRfsI", 10, "/downloads/어퍼컷Tube/2026-09-18 이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?/이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까? [OGv2pefRfsI].mkv", false, false, 3, [], 98, ~U[2026-09-18 10:00:30Z], ~U[2026-10-18 03:01:07Z], ~U[2026-10-18 03:01:07Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#메이데이 #애플티비 #어퍼컷Tube\n《메이 데이 2026》는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4h1eVqg\n\n출처: 애플티비 《메이 데이 2026》\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?", 1280, false, "OGv2pefRfsI", "https://www.youtube.com/watch?v=OGv2pefRfsI", "/downloads/어퍼컷Tube/2026-09-18 이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?/이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까? [OGv2pefRfsI].mkv", false, 3, ~U[2026-09-18 10:00:30Z]] 03:01:07.832 [debug] QUERY OK source="sources" db=0.2ms idle=901.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" = ?) [3] 03:01:07.832 [debug] QUERY OK source="media_profiles" db=0.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] 03:01:07.832 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [44424] 03:01:07.833 [debug] Current batch of media processed. Will check again in 1000ms 03:01:08.833 [debug] Current batch of media processed. Will check again in 1000ms 03:01:09.119 [info] {"source":"oban","duration":1350,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:01:09.835 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "00:00 《리처 시즌4》 6화\n09:48 《리처 시즌4》 7화\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 1361, "filename" => "/downloads/어퍼컷Tube/2026-09-15 《리처 시즌4》 6-7화 통합 떴습니다!!/《리처 시즌4》 6-7화 통합 떴습니다!! [H9OCC9FlI0g].mkv", "id" => "H9OCC9FlI0g", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=H9OCC9FlI0g", "playlist_index" => 11, "timestamp" => 1789469416, "title" => "《리처 시즌4》 6-7화 통합 떴습니다!!", "upload_date" => "20260915"} 03:01:09.835 [debug] QUERY OK source="sources" db=0.2ms idle=742.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:09.836 [debug] QUERY OK source="sources" db=0.2ms idle=742.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] 03:01:09.837 [debug] QUERY OK source="media_items" db=1.1ms idle=743.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-15 10:50:16Z], 3] 03:01:09.838 [debug] QUERY OK source="media_items" db=0.5ms idle=744.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["00:00 《리처 시즌4》 6화\n09:48 《리처 시즌4》 7화\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 6-7화 통합 떴습니다!!", "7912ad39-0e46-4744-876c-c0e571478c58", false, 1361, false, "H9OCC9FlI0g", "https://www.youtube.com/watch?v=H9OCC9FlI0g", 11, "/downloads/어퍼컷Tube/2026-09-15 《리처 시즌4》 6-7화 통합 떴습니다!!/《리처 시즌4》 6-7화 통합 떴습니다!! [H9OCC9FlI0g].mkv", false, false, 3, [], 98, ~U[2026-09-15 10:50:16Z], ~U[2026-10-18 03:01:09Z], ~U[2026-10-18 03:01:09Z], "00:00 《리처 시즌4》 6화\n09:48 《리처 시즌4》 7화\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 6-7화 통합 떴습니다!!", 1361, false, "H9OCC9FlI0g", "https://www.youtube.com/watch?v=H9OCC9FlI0g", "/downloads/어퍼컷Tube/2026-09-15 《리처 시즌4》 6-7화 통합 떴습니다!!/《리처 시즌4》 6-7화 통합 떴습니다!! [H9OCC9FlI0g].mkv", false, 3, ~U[2026-09-15 10:50:16Z]] 03:01:09.838 [debug] QUERY OK source="sources" db=0.1ms idle=719.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:09.838 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:09.839 [debug] QUERY OK source="media_items" db=0.1ms 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 [43432] 03:01:09.839 [debug] Current batch of media processed. Will check again in 1000ms 03:01:10.839 [debug] Current batch of media processed. Will check again in 1000ms 03:01:11.841 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#CitizenVigilante #아마존프라임, #어퍼컷Tube\n《Citizen Vigilante》는 IP 우회후 개별구매로 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《Citizen Vigilante》\n\n바로가기 링크\nhttps://bit.ly/4r5y133\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 1476, "filename" => "/downloads/어퍼컷Tube/2026-09-12 트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화/트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화 [OphT3y-5ciQ].mp4", "id" => "OphT3y-5ciQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OphT3y-5ciQ", "playlist_index" => 12, "timestamp" => 1789207207, "title" => "트럼프 지지자들이 탄성을 지른 \"전직 특수부대\" 영화", "upload_date" => "20260912"} 03:01:11.841 [debug] QUERY OK source="sources" db=0.1ms idle=905.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:11.841 [debug] QUERY OK source="sources" db=0.0ms idle=748.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] 03:01:11.843 [debug] QUERY OK source="media_items" db=1.1ms idle=749.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-12 10:00:07Z], 3] 03:01:11.844 [debug] QUERY OK source="media_items" db=0.4ms idle=750.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#CitizenVigilante #아마존프라임, #어퍼컷Tube\n《Citizen Vigilante》는 IP 우회후 개별구매로 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《Citizen Vigilante》\n\n바로가기 링크\nhttps://bit.ly/4r5y133\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "트럼프 지지자들이 탄성을 지른 \"전직 특수부대\" 영화", "5dedea54-8c35-45ec-8908-a6af7753b087", false, 1476, false, "OphT3y-5ciQ", "https://www.youtube.com/watch?v=OphT3y-5ciQ", 12, "/downloads/어퍼컷Tube/2026-09-12 트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화/트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화 [OphT3y-5ciQ].mp4", false, false, 3, [], 97, ~U[2026-09-12 10:00:07Z], ~U[2026-10-18 03:01:11Z], ~U[2026-10-18 03:01:11Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#CitizenVigilante #아마존프라임, #어퍼컷Tube\n《Citizen Vigilante》는 IP 우회후 개별구매로 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《Citizen Vigilante》\n\n바로가기 링크\nhttps://bit.ly/4r5y133\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "트럼프 지지자들이 탄성을 지른 \"전직 특수부대\" 영화", 1476, false, "OphT3y-5ciQ", "https://www.youtube.com/watch?v=OphT3y-5ciQ", "/downloads/어퍼컷Tube/2026-09-12 트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화/트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화 [OphT3y-5ciQ].mp4", false, 3, ~U[2026-09-12 10:00:07Z]] 03:01:11.844 [debug] QUERY OK source="sources" db=0.0ms idle=751.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:11.844 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:11.844 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [43222] 03:01:11.844 [debug] Current batch of media processed. Will check again in 1000ms 03:01:12.846 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#JTBC #너를닮은사람 #어퍼컷Tube\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n《너를 닮은 사람》 6화까지 요약입니다\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 1806, "filename" => "/downloads/어퍼컷Tube/2026-09-12 과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다/과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다 [9FFQlbcXef0].mp4", "id" => "9FFQlbcXef0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=9FFQlbcXef0", "playlist_index" => 13, "timestamp" => 1789174826, "title" => "과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다", "upload_date" => "20260912"} 03:01:12.846 [debug] QUERY OK source="sources" db=0.2ms idle=1002.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:12.847 [debug] QUERY OK source="sources" db=0.1ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:12.848 [debug] QUERY OK source="media_items" db=1.0ms idle=1002.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-12 01:00:26Z], 3] 03:01:12.848 [debug] QUERY OK source="media_items" db=0.5ms idle=1003.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#JTBC #너를닮은사람 #어퍼컷Tube\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n《너를 닮은 사람》 6화까지 요약입니다\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다", "e464099d-1e68-4b27-bc0a-4145d81866da", false, 1806, false, "9FFQlbcXef0", "https://www.youtube.com/watch?v=9FFQlbcXef0", 13, "/downloads/어퍼컷Tube/2026-09-12 과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다/과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다 [9FFQlbcXef0].mp4", false, false, 3, [], 97, ~U[2026-09-12 01:00:26Z], ~U[2026-10-18 03:01:12Z], ~U[2026-10-18 03:01:12Z], "#JTBC #너를닮은사람 #어퍼컷Tube\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n《너를 닮은 사람》 6화까지 요약입니다\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다", 1806, false, "9FFQlbcXef0", "https://www.youtube.com/watch?v=9FFQlbcXef0", "/downloads/어퍼컷Tube/2026-09-12 과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다/과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다 [9FFQlbcXef0].mp4", false, 3, ~U[2026-09-12 01:00:26Z]] 03:01:12.849 [debug] QUERY OK source="sources" db=0.1ms idle=912.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:12.849 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:12.849 [debug] QUERY OK source="media_items" db=0.1ms 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 [43221] 03:01:12.849 [debug] Current batch of media processed. Will check again in 1000ms 03:01:13.850 [debug] Current batch of media processed. Will check again in 1000ms 03:01:14.852 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#스털링포인트 #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 3252, "filename" => "/downloads/어퍼컷Tube/2026-09-04 가쉽걸 제작진이 만든 2026년 신작 시리즈/가쉽걸 제작진이 만든 2026년 신작 시리즈 [gSUDmBXTeZk].mkv", "id" => "gSUDmBXTeZk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gSUDmBXTeZk", "playlist_index" => 14, "timestamp" => 1788516034, "title" => "가쉽걸 제작진이 만든 2026년 신작 시리즈", "upload_date" => "20260904"} 03:01:14.852 [debug] QUERY OK source="sources" db=0.1ms idle=912.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:14.853 [debug] QUERY OK source="sources" db=0.0ms idle=759.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:14.854 [debug] QUERY OK source="media_items" db=1.0ms idle=760.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-04 10:00:34Z], 3] 03:01:14.855 [debug] QUERY OK source="media_items" db=0.5ms idle=761.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#스털링포인트 #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "가쉽걸 제작진이 만든 2026년 신작 시리즈", "ebb92a39-96f2-4d47-8ad0-44966455c617", false, 3252, false, "gSUDmBXTeZk", "https://www.youtube.com/watch?v=gSUDmBXTeZk", 14, "/downloads/어퍼컷Tube/2026-09-04 가쉽걸 제작진이 만든 2026년 신작 시리즈/가쉽걸 제작진이 만든 2026년 신작 시리즈 [gSUDmBXTeZk].mkv", false, false, 3, [], 98, ~U[2026-09-04 10:00:34Z], ~U[2026-10-18 03:01:14Z], ~U[2026-10-18 03:01:14Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#스털링포인트 #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "가쉽걸 제작진이 만든 2026년 신작 시리즈", 3252, false, "gSUDmBXTeZk", "https://www.youtube.com/watch?v=gSUDmBXTeZk", "/downloads/어퍼컷Tube/2026-09-04 가쉽걸 제작진이 만든 2026년 신작 시리즈/가쉽걸 제작진이 만든 2026년 신작 시리즈 [gSUDmBXTeZk].mkv", false, 3, ~U[2026-09-04 10:00:34Z]] 03:01:14.855 [debug] QUERY OK source="sources" db=0.1ms idle=762.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:14.855 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:14.856 [debug] QUERY OK source="media_items" db=0.1ms 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 [42077] 03:01:14.856 [debug] Current batch of media processed. Will check again in 1000ms 03:01:15.857 [debug] Current batch of media processed. Will check again in 1000ms 03:01:16.156 [info] GET /sources/3/media/7021 03:01:16.156 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "7021", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 03:01:16.157 [debug] QUERY OK source="media_items" db=0.2ms idle=215.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" = ?) [7021] 03:01:16.157 [debug] QUERY OK source="tasks" db=0.1ms idle=64.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [7021] 03:01:16.157 [debug] QUERY OK source="sources" db=0.2ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:16.158 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=64.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 (?,?,?,?)) [14812, 15293, 15794, 16281] 03:01:16.158 [debug] QUERY OK source="settings" db=0.0ms idle=65.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:16.158 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:16.159 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:01:16.159 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:16.160 [info] Sent 200 in 3ms 03:01:16.656 [info] GET /media/6465bf49-8140-4a06-99b5-9e7a8e34de98/stream 03:01:16.656 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "6465bf49-8140-4a06-99b5-9e7a8e34de98", "v" => "1791514716"} Pipelines: [:maybe_basic_auth] 03:01:16.657 [debug] QUERY OK source="media_items" db=0.3ms idle=498.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["6465bf49-8140-4a06-99b5-9e7a8e34de98"] 03:01:16.657 [debug] Invalid range request for media item: 6465bf49-8140-4a06-99b5-9e7a8e34de98 - serving full file 03:01:16.657 [info] Sent 200 in 1ms 03:01:16.858 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 1028, "filename" => "/downloads/어퍼컷Tube/2026-08-30 《리처 시즌4》 5화 떳습니다/《리처 시즌4》 5화 떳습니다 [6Sv2g40Q7s0].mkv", "id" => "6Sv2g40Q7s0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=6Sv2g40Q7s0", "playlist_index" => 15, "timestamp" => 1788090523, "title" => "《리처 시즌4》 5화 떳습니다", "upload_date" => "20260830"} 03:01:16.858 [debug] QUERY OK source="sources" db=0.3ms idle=699.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:16.859 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [3] 03:01:16.860 [debug] QUERY OK source="media_items" db=1.0ms idle=700.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-30 11:48:43Z], 3] 03:01:16.861 [debug] QUERY OK source="media_items" db=0.5ms idle=701.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 5화 떳습니다", "1451e39f-01f5-41eb-a02f-3587c75d90bf", false, 1028, false, "6Sv2g40Q7s0", "https://www.youtube.com/watch?v=6Sv2g40Q7s0", 15, "/downloads/어퍼컷Tube/2026-08-30 《리처 시즌4》 5화 떳습니다/《리처 시즌4》 5화 떳습니다 [6Sv2g40Q7s0].mkv", false, false, 3, [], 97, ~U[2026-08-30 11:48:43Z], ~U[2026-10-18 03:01:16Z], ~U[2026-10-18 03:01:16Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 5화 떳습니다", 1028, false, "6Sv2g40Q7s0", "https://www.youtube.com/watch?v=6Sv2g40Q7s0", "/downloads/어퍼컷Tube/2026-08-30 《리처 시즌4》 5화 떳습니다/《리처 시즌4》 5화 떳습니다 [6Sv2g40Q7s0].mkv", false, 3, ~U[2026-08-30 11:48:43Z]] 03:01:16.861 [debug] QUERY OK source="sources" db=0.1ms idle=203.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:16.862 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:16.862 [debug] QUERY OK source="media_items" db=0.1ms 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 [42081] 03:01:16.862 [debug] Current batch of media processed. Will check again in 1000ms 03:01:17.862 [debug] Current batch of media processed. Will check again in 1000ms 03:01:18.864 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받은 영상입니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#메멘토 #크리스토퍼놀란 #어퍼컷Tube\n《메멘토》는 IP우회후 아마존 프라임에서 개별 구매 가능하고\n넷플릭스와 왓챠 티빙 웨이브에서도 시청 가능합니다\n\n출처: 아마존프라임 《메멘토》\n\n바로보기 링크\nhttps://bit.ly/47SfaQ8\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 3267, "filename" => "/downloads/어퍼컷Tube/2026-08-30 지구 역사상 최고의 반전 영화를 감히 요약합니다/지구 역사상 최고의 반전 영화를 감히 요약합니다 [YW6H72GqdNA].mp4", "id" => "YW6H72GqdNA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=YW6H72GqdNA", "playlist_index" => 16, "timestamp" => 1788049371, "title" => "지구 역사상 최고의 반전 영화를 감히 요약합니다", "upload_date" => "20260830"} 03:01:18.864 [debug] QUERY OK source="sources" db=0.2ms idle=919.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:18.865 [debug] QUERY OK source="sources" db=0.1ms idle=771.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:18.866 [debug] QUERY OK source="media_items" db=1.1ms idle=772.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-30 00:22:51Z], 3] 03:01:18.867 [debug] QUERY OK source="media_items" db=0.5ms idle=773.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받은 영상입니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#메멘토 #크리스토퍼놀란 #어퍼컷Tube\n《메멘토》는 IP우회후 아마존 프라임에서 개별 구매 가능하고\n넷플릭스와 왓챠 티빙 웨이브에서도 시청 가능합니다\n\n출처: 아마존프라임 《메멘토》\n\n바로보기 링크\nhttps://bit.ly/47SfaQ8\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "지구 역사상 최고의 반전 영화를 감히 요약합니다", "abe9b8a1-2de5-4f64-ac16-d6214c280ed6", false, 3267, false, "YW6H72GqdNA", "https://www.youtube.com/watch?v=YW6H72GqdNA", 16, "/downloads/어퍼컷Tube/2026-08-30 지구 역사상 최고의 반전 영화를 감히 요약합니다/지구 역사상 최고의 반전 영화를 감히 요약합니다 [YW6H72GqdNA].mp4", false, false, 3, [], 97, ~U[2026-08-30 00:22:51Z], ~U[2026-10-18 03:01:18Z], ~U[2026-10-18 03:01:18Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받은 영상입니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#메멘토 #크리스토퍼놀란 #어퍼컷Tube\n《메멘토》는 IP우회후 아마존 프라임에서 개별 구매 가능하고\n넷플릭스와 왓챠 티빙 웨이브에서도 시청 가능합니다\n\n출처: 아마존프라임 《메멘토》\n\n바로보기 링크\nhttps://bit.ly/47SfaQ8\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "지구 역사상 최고의 반전 영화를 감히 요약합니다", 3267, false, "YW6H72GqdNA", "https://www.youtube.com/watch?v=YW6H72GqdNA", "/downloads/어퍼컷Tube/2026-08-30 지구 역사상 최고의 반전 영화를 감히 요약합니다/지구 역사상 최고의 반전 영화를 감히 요약합니다 [YW6H72GqdNA].mp4", false, 3, ~U[2026-08-30 00:22:51Z]] 03:01:18.867 [debug] QUERY OK source="sources" db=0.1ms idle=774.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:18.867 [debug] QUERY OK source="media_profiles" db=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] 03:01:18.868 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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 [42083] 03:01:18.868 [debug] Current batch of media processed. Will check again in 1000ms 03:01:19.869 [debug] Current batch of media processed. Will check again in 1000ms 03:01:19.939 [info] GET /media/8e57fea3-04cc-4d56-9280-947d59d45b2c/stream 03:01:19.939 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "8e57fea3-04cc-4d56-9280-947d59d45b2c", "v" => "1792033321"} Pipelines: [:maybe_basic_auth] 03:01:19.940 [debug] QUERY OK source="media_items" db=0.2ms idle=1072.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["8e57fea3-04cc-4d56-9280-947d59d45b2c"] 03:01:19.940 [debug] Invalid range request for media item: 8e57fea3-04cc-4d56-9280-947d59d45b2c - serving full file 03:01:19.940 [info] Sent 200 in 1ms 03:01:20.870 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 2.0, "description" => "*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r6_Tube_Aug\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n00:00 《리처 시즌4》 1-3화\n01:04:44 《리처 시즌4》 4화\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "duration" => 5254, "filename" => "/downloads/어퍼컷Tube/2026-08-24 《리처 시즌4》 떴다/《리처 시즌4》 떴다 [QvJZcb3d_j0].mkv", "id" => "QvJZcb3d_j0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=QvJZcb3d_j0", "playlist_index" => 17, "timestamp" => 1787583639, "title" => "《리처 시즌4》 떴다", "upload_date" => "20260824"} 03:01:20.870 [debug] QUERY OK source="sources" db=0.2ms idle=930.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:20.871 [debug] QUERY OK source="sources" db=0.1ms idle=924.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:20.872 [debug] QUERY OK source="media_items" db=1.3ms idle=778.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-24 15:00:39Z], 3] 03:01:20.873 [debug] QUERY OK source="media_items" db=0.7ms idle=780.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r6_Tube_Aug\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n00:00 《리처 시즌4》 1-3화\n01:04:44 《리처 시즌4》 4화\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 떴다", "467c6af1-dae6-4f60-a300-9e1fd9b0e3b6", false, 5254, false, "QvJZcb3d_j0", "https://www.youtube.com/watch?v=QvJZcb3d_j0", 17, "/downloads/어퍼컷Tube/2026-08-24 《리처 시즌4》 떴다/《리처 시즌4》 떴다 [QvJZcb3d_j0].mkv", false, false, 3, [], 98, ~U[2026-08-24 15:00:39Z], ~U[2026-10-18 03:01:20Z], ~U[2026-10-18 03:01:20Z], "*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r6_Tube_Aug\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n00:00 《리처 시즌4》 1-3화\n01:04:44 《리처 시즌4》 4화\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 떴다", 5254, false, "QvJZcb3d_j0", "https://www.youtube.com/watch?v=QvJZcb3d_j0", "/downloads/어퍼컷Tube/2026-08-24 《리처 시즌4》 떴다/《리처 시즌4》 떴다 [QvJZcb3d_j0].mkv", false, 3, ~U[2026-08-24 15:00:39Z]] 03:01:20.874 [debug] QUERY OK source="sources" db=0.1ms idle=781.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:20.874 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:01:20.874 [debug] QUERY OK source="media_items" db=0.1ms 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 [42085] 03:01:20.875 [debug] Current batch of media processed. Will check again in 1000ms 03:01:21.550 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@%EC%96%B4%ED%8D%BC%EC%BB%B7 --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/어퍼컷Tube/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/59/9d/599d09da79f2434df72ec9822f8adfb947d9bc66fc17d8f811e7d8832aa30577.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a6/73/a6738a668ca532b2ef9df4fdbebd3e95c46bdd6a2363498c1e85fb3cb05f9afc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 03:01:21.551 [debug] Gracefully stopping file follower 03:01:21.551 [debug] QUERY OK source="sources" db=0.3ms idle=677.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 03:01:21.552 [debug] QUERY OK source="sources" db=0.1ms idle=677.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.553 [debug] QUERY OK source="media_items" db=1.1ms idle=677.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-17 00:00:44Z], 3] 03:01:21.554 [debug] QUERY OK source="media_items" db=0.8ms idle=678.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#암지아킹의라이벌들 #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임. \n\n바로가기 링크\nhttps://bit.ly/4zqtvir\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "단 \"43 분\",,, 진짜 미치도록 재밌습니다", "33c4b7da-587e-4002-9696-35ea58ac4629", false, 2599, false, "gdhre42GGbk", "https://www.youtube.com/watch?v=gdhre42GGbk", 1, "/downloads/어퍼컷Tube/2026-10-17 단 "43 분",,, 진짜 미치도록 재밌습니다/단 "43 분",,, 진짜 미치도록 재밌습니다 [gdhre42GGbk].mkv", false, false, 3, [], 97, ~U[2026-10-17 00:00:44Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#암지아킹의라이벌들 #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임. \n\n바로가기 링크\nhttps://bit.ly/4zqtvir\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "단 \"43 분\",,, 진짜 미치도록 재밌습니다", 2599, false, "gdhre42GGbk", "https://www.youtube.com/watch?v=gdhre42GGbk", "/downloads/어퍼컷Tube/2026-10-17 단 "43 분",,, 진짜 미치도록 재밌습니다/단 "43 분",,, 진짜 미치도록 재밌습니다 [gdhre42GGbk].mkv", false, 3, ~U[2026-10-17 00:00:44Z]] 03:01:21.555 [debug] QUERY OK source="sources" db=0.1ms idle=605.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.556 [debug] QUERY OK source="media_items" db=0.9ms idle=3.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 10:00:37Z], 3] 03:01:21.557 [debug] QUERY OK source="media_items" db=0.4ms idle=4.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#캐리 #아마존프라임 #어퍼컷Tube\n《캐리》 1-2화 리뷰입니다 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《캐리》\n\n바로가기 링크\nhttps://bit.ly/4jQDklc\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???", "6ab4a0c3-d28f-4942-90d2-fd15a9ea704c", false, 3034, false, "5k3SLUzvWdU", "https://www.youtube.com/watch?v=5k3SLUzvWdU", 2, "/downloads/어퍼컷Tube/2026-10-10 기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???/기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고??? [5k3SLUzvWdU].mkv", false, false, 3, [], 98, ~U[2026-10-10 10:00:37Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#캐리 #아마존프라임 #어퍼컷Tube\n《캐리》 1-2화 리뷰입니다 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《캐리》\n\n바로가기 링크\nhttps://bit.ly/4jQDklc\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???", 3034, false, "5k3SLUzvWdU", "https://www.youtube.com/watch?v=5k3SLUzvWdU", "/downloads/어퍼컷Tube/2026-10-10 기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고???/기묘한 이야기 + 엑스맨 + 루머의 루머의 루머를 섞었는데 “넷플릭스”가 아니라고??? [5k3SLUzvWdU].mkv", false, 3, ~U[2026-10-10 10:00:37Z]] 03:01:21.557 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.559 [debug] QUERY OK source="media_items" db=1.2ms idle=3.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 10:00:06Z], 3] 03:01:21.561 [debug] QUERY OK source="media_items" db=1.6ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#니글리 #아마존프라임, #어퍼컷Tube\n《니글리》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《니글리》\n\n바로가기 링크\nhttps://bit.ly/4rGiQO5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단", "cba3f9d7-9e20-4194-b7b4-3bc4b893030f", false, 7863, false, "IQ2aGRwdzWY", "https://www.youtube.com/watch?v=IQ2aGRwdzWY", 3, "/downloads/어퍼컷Tube/2026-10-09 나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단/나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단 [IQ2aGRwdzWY].mkv", false, false, 3, [], 98, ~U[2026-10-09 10:00:06Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#니글리 #아마존프라임, #어퍼컷Tube\n《니글리》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《니글리》\n\n바로가기 링크\nhttps://bit.ly/4rGiQO5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단", 7863, false, "IQ2aGRwdzWY", "https://www.youtube.com/watch?v=IQ2aGRwdzWY", "/downloads/어퍼컷Tube/2026-10-09 나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단/나방처럼 불빛으로 달려가는 약을 개발한 사이비 종교 집단 [IQ2aGRwdzWY].mkv", false, 3, ~U[2026-10-09 10:00:06Z]] 03:01:21.561 [debug] QUERY OK source="sources" db=0.2ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.562 [debug] QUERY OK source="media_items" db=0.9ms idle=4.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 00:00:04Z], 3] 03:01:21.563 [debug] QUERY OK source="media_items" db=0.5ms idle=5.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#X #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 \n\n바로가기 링크\nhttps://bit.ly/3Vp8NB5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화", "3edb5845-cf29-4d8b-889b-fc2e8f7748e0", false, 2668, false, "17ZuKHdQiow", "https://www.youtube.com/watch?v=17ZuKHdQiow", 4, "/downloads/어퍼컷Tube/2026-10-05 미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화/미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화 [17ZuKHdQiow].NA", false, false, 3, [], 98, ~U[2026-10-05 00:00:04Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#X #아마존프라임, #어퍼컷Tube\n《X》 2022는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 \n\n바로가기 링크\nhttps://bit.ly/3Vp8NB5\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화", 2668, false, "17ZuKHdQiow", "https://www.youtube.com/watch?v=17ZuKHdQiow", "/downloads/어퍼컷Tube/2026-10-05 미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화/미쳐버린 잔인함과 선정성으로 한국 극장에 걸리지도 못한 A24의 미개봉작 영화 [17ZuKHdQiow].NA", false, 3, ~U[2026-10-05 00:00:04Z]] 03:01:21.564 [debug] QUERY OK source="sources" db=0.2ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.565 [debug] QUERY OK source="media_items" db=0.9ms idle=3.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 10:17:26Z], 3] 03:01:21.565 [debug] QUERY OK source="media_items" db=0.5ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#스타트업 #넷플릭스 #어퍼컷Tube\n《스타트업》 시즌1은 넷플릭스에서 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4yWjUjm\n\n출처: 《스타트업》 시즌1\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마", "5d620ae8-b538-466b-bc7d-afc44a36af19", false, 8866, false, "avbqlPLQdjY", "https://www.youtube.com/watch?v=avbqlPLQdjY", 5, "/downloads/어퍼컷Tube/2026-10-04 넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마/넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마 [avbqlPLQdjY].mp4", false, false, 3, [], 98, ~U[2026-10-04 10:17:26Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#스타트업 #넷플릭스 #어퍼컷Tube\n《스타트업》 시즌1은 넷플릭스에서 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4yWjUjm\n\n출처: 《스타트업》 시즌1\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마", 8866, false, "avbqlPLQdjY", "https://www.youtube.com/watch?v=avbqlPLQdjY", "/downloads/어퍼컷Tube/2026-10-04 넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마/넷플릭스에서 볼 수 있는 개꿀잼 범죄 드라마 [avbqlPLQdjY].mp4", false, 3, ~U[2026-10-04 10:17:26Z]] 03:01:21.566 [debug] QUERY OK source="sources" db=0.2ms idle=3.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] 03:01:21.567 [debug] QUERY OK source="media_items" db=1.1ms idle=2.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-26 10:00:31Z], 3] 03:01:21.568 [debug] QUERY OK source="media_items" db=0.7ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r7_Tube\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#,토니 #아마존프라임, #어퍼컷Tube\n《토니 2026》는 프라임 비디오에서 개별 구매로 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4hbQaJn\n\n출처: 《토니 2026》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요", "a7c8a48f-4e08-4fac-8fc2-12fb03c86601", false, 2648, false, "nq-Ev_eTAgY", "https://www.youtube.com/watch?v=nq-Ev_eTAgY", 6, "/downloads/어퍼컷Tube/2026-09-26 (한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요/(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요 [nq-Ev_eTAgY].mkv", false, false, 3, [], 98, ~U[2026-09-26 10:00:31Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r7_Tube\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n#,토니 #아마존프라임, #어퍼컷Tube\n《토니 2026》는 프라임 비디오에서 개별 구매로 시청 가능합니다\n(한글 자막은 없습니다)\n\n바로보기 링크\nhttps://bit.ly/4hbQaJn\n\n출처: 《토니 2026》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요", 2648, false, "nq-Ev_eTAgY", "https://www.youtube.com/watch?v=nq-Ev_eTAgY", "/downloads/어퍼컷Tube/2026-09-26 (한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요/(한국 미개봉작) 요즘 영화 다 거기서 거기라고 느꼈다면 이거 보세요 [nq-Ev_eTAgY].mkv", false, 3, ~U[2026-09-26 10:00:31Z]] 03:01:21.569 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.570 [debug] QUERY OK source="media_items" db=0.8ms idle=3.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-24 10:00:32Z], 3] 03:01:21.571 [debug] QUERY OK source="media_items" db=0.7ms idle=4.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n*[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n00:00 《스털링 포인트》 1부\n53:45 《스털링 포인트》 2부\n\n#스털링포인트, #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드", "c7d1a5bb-f24a-4f4b-8d3e-5600c1badcaa", false, 7326, false, "3IXgfeWqGOE", "https://www.youtube.com/watch?v=3IXgfeWqGOE", 7, "/downloads/어퍼컷Tube/2026-09-24 점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드/점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드 [3IXgfeWqGOE].mkv", false, false, 3, [], 98, ~U[2026-09-24 10:00:32Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 기간 동안만 회원 먼저 공개합니다\n\n*[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n00:00 《스털링 포인트》 1부\n53:45 《스털링 포인트》 2부\n\n#스털링포인트, #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드", 7326, false, "3IXgfeWqGOE", "https://www.youtube.com/watch?v=3IXgfeWqGOE", "/downloads/어퍼컷Tube/2026-09-24 점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드/점점 정상화 되고 있는 미드 여배우 캐스팅 l 2026년 아마존 프라임 신작 미드 [3IXgfeWqGOE].mkv", false, 3, ~U[2026-09-24 10:00:32Z]] 03:01:21.571 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.572 [debug] QUERY OK source="media_items" db=0.9ms idle=3.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-22 10:00:25Z], 3] 03:01:21.573 [debug] QUERY OK source="media_items" db=0.4ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#테드래소 #애플티비 #어퍼컷Tube\n\n《테드래소》 시즌4는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4AlO8xK\n\n출처: 애플티비 《테드 래소 시즌4》 1-3화\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "축구에서 감독이 중요한 이유", "0a0f0734-1496-450e-a25c-0dfc871fdef1", false, 1990, false, "nvTgga0dIKo", "https://www.youtube.com/watch?v=nvTgga0dIKo", 8, "/downloads/어퍼컷Tube/2026-09-22 축구에서 감독이 중요한 이유/축구에서 감독이 중요한 이유 [nvTgga0dIKo].mkv", false, false, 3, [], 97, ~U[2026-09-22 10:00:25Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#테드래소 #애플티비 #어퍼컷Tube\n\n《테드래소》 시즌4는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4AlO8xK\n\n출처: 애플티비 《테드 래소 시즌4》 1-3화\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "축구에서 감독이 중요한 이유", 1990, false, "nvTgga0dIKo", "https://www.youtube.com/watch?v=nvTgga0dIKo", "/downloads/어퍼컷Tube/2026-09-22 축구에서 감독이 중요한 이유/축구에서 감독이 중요한 이유 [nvTgga0dIKo].mkv", false, 3, ~U[2026-09-22 10:00:25Z]] 03:01:21.573 [debug] QUERY OK source="sources" db=0.1ms idle=3.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.574 [debug] QUERY OK source="media_items" db=0.9ms idle=2.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-19 00:24:49Z], 3] 03:01:21.576 [debug] QUERY OK source="media_items" db=0.7ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join\n\n00:00 《리처 시즌4》 1-3화\n01:06:07 《리처 시즌4》 4화\n01:27:04 《리처 시즌4》 5화\n01:43:52 《리처 시즌4》 6화\n01:53:36 《리처 시즌4》 7화\n02:06:26 《리처 시즌4》 8화", "하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기", "194b1a39-169c-4713-8efb-ee7d5da53bfd", false, 8740, false, "uT_G6GovHdw", "https://www.youtube.com/watch?v=uT_G6GovHdw", 9, "/downloads/어퍼컷Tube/2026-09-19 하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기/하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기 [uT_G6GovHdw].mkv", false, false, 3, [], 98, ~U[2026-09-19 00:24:49Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n* 유료 광고가 포함된 영상입니다\nhttps://surfshark.com/upk 클릭하거나 결제 시 코드 UPK 입력하고\nSurfshark 4개월 추가 사용 혜택을 받아가세요!\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join\n\n00:00 《리처 시즌4》 1-3화\n01:06:07 《리처 시즌4》 4화\n01:27:04 《리처 시즌4》 5화\n01:43:52 《리처 시즌4》 6화\n01:53:36 《리처 시즌4》 7화\n02:06:26 《리처 시즌4》 8화", "하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기", 8740, false, "uT_G6GovHdw", "https://www.youtube.com/watch?v=uT_G6GovHdw", "/downloads/어퍼컷Tube/2026-09-19 하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기/하필이면 191Cm 110Kg 전직 특수부대 어쩌고 l 《리처 시즌 4》 결말까지 몰아보기 [uT_G6GovHdw].mkv", false, 3, ~U[2026-09-19 00:24:49Z]] 03:01:21.576 [debug] QUERY OK source="sources" db=0.3ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.578 [debug] QUERY OK source="media_items" db=1.1ms idle=3.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-18 10:00:30Z], 3] 03:01:21.579 [debug] QUERY OK source="media_items" db=0.7ms idle=4.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#메이데이 #애플티비 #어퍼컷Tube\n《메이 데이 2026》는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4h1eVqg\n\n출처: 애플티비 《메이 데이 2026》\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?", "e9b6e7d0-8355-4d4b-bb4a-10f5f8598c3a", false, 1280, false, "OGv2pefRfsI", "https://www.youtube.com/watch?v=OGv2pefRfsI", 10, "/downloads/어퍼컷Tube/2026-09-18 이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?/이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까? [OGv2pefRfsI].mkv", false, false, 3, [], 98, ~U[2026-09-18 10:00:30Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#메이데이 #애플티비 #어퍼컷Tube\n《메이 데이 2026》는 애플티비에서 시청가능합니다\n\n바로보기 링크\nhttps://bit.ly/4h1eVqg\n\n출처: 애플티비 《메이 데이 2026》\n\n어퍼컷Tube 멤버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?", 1280, false, "OGv2pefRfsI", "https://www.youtube.com/watch?v=OGv2pefRfsI", "/downloads/어퍼컷Tube/2026-09-18 이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까?/이렇게 재밌는 영화를 OTT로 풀어도 되는 걸까? [OGv2pefRfsI].mkv", false, 3, ~U[2026-09-18 10:00:30Z]] 03:01:21.580 [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" = ?) [3] 03:01:21.581 [debug] QUERY OK source="media_items" db=1.2ms idle=4.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-15 10:50:16Z], 3] 03:01:21.582 [debug] QUERY OK source="media_items" db=0.7ms idle=4.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["00:00 《리처 시즌4》 6화\n09:48 《리처 시즌4》 7화\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 6-7화 통합 떴습니다!!", "3ad614dd-d8b2-44aa-9565-1f1d6381b2c2", false, 1361, false, "H9OCC9FlI0g", "https://www.youtube.com/watch?v=H9OCC9FlI0g", 11, "/downloads/어퍼컷Tube/2026-09-15 《리처 시즌4》 6-7화 통합 떴습니다!!/《리처 시즌4》 6-7화 통합 떴습니다!! [H9OCC9FlI0g].mkv", false, false, 3, [], 98, ~U[2026-09-15 10:50:16Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "00:00 《리처 시즌4》 6화\n09:48 《리처 시즌4》 7화\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 6-7화 통합 떴습니다!!", 1361, false, "H9OCC9FlI0g", "https://www.youtube.com/watch?v=H9OCC9FlI0g", "/downloads/어퍼컷Tube/2026-09-15 《리처 시즌4》 6-7화 통합 떴습니다!!/《리처 시즌4》 6-7화 통합 떴습니다!! [H9OCC9FlI0g].mkv", false, 3, ~U[2026-09-15 10:50:16Z]] 03:01:21.583 [debug] QUERY OK source="sources" db=0.3ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.585 [debug] QUERY OK source="media_items" db=1.7ms idle=3.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-12 10:00:07Z], 3] 03:01:21.587 [debug] QUERY OK source="media_items" db=1.2ms idle=5.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#CitizenVigilante #아마존프라임, #어퍼컷Tube\n《Citizen Vigilante》는 IP 우회후 개별구매로 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《Citizen Vigilante》\n\n바로가기 링크\nhttps://bit.ly/4r5y133\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "트럼프 지지자들이 탄성을 지른 \"전직 특수부대\" 영화", "4f971ec6-fa07-4e80-bb65-8493b54ea4bf", false, 1476, false, "OphT3y-5ciQ", "https://www.youtube.com/watch?v=OphT3y-5ciQ", 12, "/downloads/어퍼컷Tube/2026-09-12 트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화/트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화 [OphT3y-5ciQ].mp4", false, false, 3, [], 97, ~U[2026-09-12 10:00:07Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n#CitizenVigilante #아마존프라임, #어퍼컷Tube\n《Citizen Vigilante》는 IP 우회후 개별구매로 \n아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《Citizen Vigilante》\n\n바로가기 링크\nhttps://bit.ly/4r5y133\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "트럼프 지지자들이 탄성을 지른 \"전직 특수부대\" 영화", 1476, false, "OphT3y-5ciQ", "https://www.youtube.com/watch?v=OphT3y-5ciQ", "/downloads/어퍼컷Tube/2026-09-12 트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화/트럼프 지지자들이 탄성을 지른 "전직 특수부대" 영화 [OphT3y-5ciQ].mp4", false, 3, ~U[2026-09-12 10:00:07Z]] 03:01:21.588 [debug] QUERY OK source="sources" db=0.9ms idle=5.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.590 [debug] QUERY OK source="media_items" db=1.4ms idle=6.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-12 01:00:26Z], 3] 03:01:21.591 [debug] QUERY OK source="media_items" db=0.8ms idle=7.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#JTBC #너를닮은사람 #어퍼컷Tube\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n《너를 닮은 사람》 6화까지 요약입니다\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다", "753f740a-fef7-44f8-83c6-55abef35de1b", false, 1806, false, "9FFQlbcXef0", "https://www.youtube.com/watch?v=9FFQlbcXef0", 13, "/downloads/어퍼컷Tube/2026-09-12 과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다/과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다 [9FFQlbcXef0].mp4", false, false, 3, [], 97, ~U[2026-09-12 01:00:26Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "#JTBC #너를닮은사람 #어퍼컷Tube\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n《너를 닮은 사람》 6화까지 요약입니다\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다", 1806, false, "9FFQlbcXef0", "https://www.youtube.com/watch?v=9FFQlbcXef0", "/downloads/어퍼컷Tube/2026-09-12 과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다/과거 세탁하고 부자랑 잘살고 있는데 모든 게 꼬이기 시작했다 [9FFQlbcXef0].mp4", false, 3, ~U[2026-09-12 01:00:26Z]] 03:01:21.592 [debug] QUERY OK source="sources" db=0.3ms idle=6.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.594 [debug] QUERY OK source="media_items" db=1.4ms idle=5.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-04 10:00:34Z], 3] 03:01:21.595 [debug] QUERY OK source="media_items" db=0.8ms idle=5.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#스털링포인트 #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "가쉽걸 제작진이 만든 2026년 신작 시리즈", "6f63f03b-47a2-44b9-b4a9-1c6a83c6dd51", false, 3252, false, "gSUDmBXTeZk", "https://www.youtube.com/watch?v=gSUDmBXTeZk", 14, "/downloads/어퍼컷Tube/2026-09-04 가쉽걸 제작진이 만든 2026년 신작 시리즈/가쉽걸 제작진이 만든 2026년 신작 시리즈 [gSUDmBXTeZk].mkv", false, false, 3, [], 98, ~U[2026-09-04 10:00:34Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#스털링포인트 #아마존프라임, #어퍼컷Tube\n《스털링 포인트》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《스털링 포인트》\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "가쉽걸 제작진이 만든 2026년 신작 시리즈", 3252, false, "gSUDmBXTeZk", "https://www.youtube.com/watch?v=gSUDmBXTeZk", "/downloads/어퍼컷Tube/2026-09-04 가쉽걸 제작진이 만든 2026년 신작 시리즈/가쉽걸 제작진이 만든 2026년 신작 시리즈 [gSUDmBXTeZk].mkv", false, 3, ~U[2026-09-04 10:00:34Z]] 03:01:21.596 [debug] QUERY OK source="sources" db=0.3ms idle=5.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] 03:01:21.597 [debug] QUERY OK source="media_items" db=1.4ms idle=4.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-30 11:48:43Z], 3] 03:01:21.599 [debug] QUERY OK source="media_items" db=1.0ms idle=5.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 5화 떳습니다", "331bc331-14b3-4cf1-8788-ded5ce396c55", false, 1028, false, "6Sv2g40Q7s0", "https://www.youtube.com/watch?v=6Sv2g40Q7s0", 15, "/downloads/어퍼컷Tube/2026-08-30 《리처 시즌4》 5화 떳습니다/《리처 시즌4》 5화 떳습니다 [6Sv2g40Q7s0].mkv", false, false, 3, [], 97, ~U[2026-08-30 11:48:43Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 검토 받는 동안 회원 먼저 공개합니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 5화 떳습니다", 1028, false, "6Sv2g40Q7s0", "https://www.youtube.com/watch?v=6Sv2g40Q7s0", "/downloads/어퍼컷Tube/2026-08-30 《리처 시즌4》 5화 떳습니다/《리처 시즌4》 5화 떳습니다 [6Sv2g40Q7s0].mkv", false, 3, ~U[2026-08-30 11:48:43Z]] 03:01:21.600 [debug] QUERY OK source="sources" db=0.3ms idle=5.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.602 [debug] QUERY OK source="media_items" db=1.6ms idle=5.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-30 00:22:51Z], 3] 03:01:21.604 [debug] QUERY OK source="media_items" db=0.7ms idle=7.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받은 영상입니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#메멘토 #크리스토퍼놀란 #어퍼컷Tube\n《메멘토》는 IP우회후 아마존 프라임에서 개별 구매 가능하고\n넷플릭스와 왓챠 티빙 웨이브에서도 시청 가능합니다\n\n출처: 아마존프라임 《메멘토》\n\n바로보기 링크\nhttps://bit.ly/47SfaQ8\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "지구 역사상 최고의 반전 영화를 감히 요약합니다", "e401b58f-4e10-40e4-a348-e7a1c5fb7675", false, 3267, false, "YW6H72GqdNA", "https://www.youtube.com/watch?v=YW6H72GqdNA", 16, "/downloads/어퍼컷Tube/2026-08-30 지구 역사상 최고의 반전 영화를 감히 요약합니다/지구 역사상 최고의 반전 영화를 감히 요약합니다 [YW6H72GqdNA].mp4", false, false, 3, [], 97, ~U[2026-08-30 00:22:51Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받은 영상입니다\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n#메멘토 #크리스토퍼놀란 #어퍼컷Tube\n《메멘토》는 IP우회후 아마존 프라임에서 개별 구매 가능하고\n넷플릭스와 왓챠 티빙 웨이브에서도 시청 가능합니다\n\n출처: 아마존프라임 《메멘토》\n\n바로보기 링크\nhttps://bit.ly/47SfaQ8\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "지구 역사상 최고의 반전 영화를 감히 요약합니다", 3267, false, "YW6H72GqdNA", "https://www.youtube.com/watch?v=YW6H72GqdNA", "/downloads/어퍼컷Tube/2026-08-30 지구 역사상 최고의 반전 영화를 감히 요약합니다/지구 역사상 최고의 반전 영화를 감히 요약합니다 [YW6H72GqdNA].mp4", false, 3, ~U[2026-08-30 00:22:51Z]] 03:01:21.604 [debug] QUERY OK source="sources" db=0.3ms idle=6.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.606 [debug] QUERY OK source="media_items" db=1.1ms idle=5.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-24 15:00:39Z], 3] 03:01:21.607 [debug] QUERY OK source="media_items" db=0.8ms idle=6.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r6_Tube_Aug\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n00:00 《리처 시즌4》 1-3화\n01:04:44 《리처 시즌4》 4화\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 떴다", "ddc71fcf-9f32-4b8a-9cdf-a5a3b6949d38", false, 5254, false, "QvJZcb3d_j0", "https://www.youtube.com/watch?v=QvJZcb3d_j0", 17, "/downloads/어퍼컷Tube/2026-08-24 《리처 시즌4》 떴다/《리처 시즌4》 떴다 [QvJZcb3d_j0].mkv", false, false, 3, [], 98, ~U[2026-08-24 15:00:39Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "*유료광고가 포함된 영상입니다\n💸프리캐시에서 게임하고 쉽게 보상 받아 기프트카드로 교환하기!\nhttps://t2m.io/r6_Tube_Aug\n\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n\n00:00 《리처 시즌4》 1-3화\n01:04:44 《리처 시즌4》 4화\n\n#리처시즌4, #아마존프라임, #어퍼컷Tube\n《리처 시즌4》는 아마존 프라임에서 시청 가능합니다\n\n출처: 아마존프라임 《리처 시즌4》\n\n바로가기 링크\nhttps://bit.ly/3TYkPRa\n\n[광고] 이 영상에는 네이버로부터 소재를 제공받아 제작된 내용이 포함되어 있습니다.\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "《리처 시즌4》 떴다", 5254, false, "QvJZcb3d_j0", "https://www.youtube.com/watch?v=QvJZcb3d_j0", "/downloads/어퍼컷Tube/2026-08-24 《리처 시즌4》 떴다/《리처 시즌4》 떴다 [QvJZcb3d_j0].mkv", false, 3, ~U[2026-08-24 15:00:39Z]] 03:01:21.608 [debug] QUERY OK source="sources" db=1.0ms idle=5.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] 03:01:21.613 [debug] QUERY OK source="media_items" db=3.8ms queue=0.1ms idle=5.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-21 10:00:14Z], 3] 03:01:21.614 [debug] QUERY OK source="media_items" db=0.9ms idle=8.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#더랍스터 #아마존프라임 #어퍼컷Tube\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n더 랍스터는 아마존프라임 IP 우회후 개별 구매로 시청 가능합니다\n한글자막은 없습니다\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "독신을 불법으로 지정하면 벌어지는 일", "fe67b183-cf7b-4460-b8e0-b2017089165e", false, 3093, false, "0Z7CMK86Mb4", "https://www.youtube.com/watch?v=0Z7CMK86Mb4", 18, "/downloads/어퍼컷Tube/2026-08-21 독신을 불법으로 지정하면 벌어지는 일/독신을 불법으로 지정하면 벌어지는 일 [0Z7CMK86Mb4].mp4", false, false, 3, [], 98, ~U[2026-08-21 10:00:14Z], ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], "#더랍스터 #아마존프라임 #어퍼컷Tube\n* 본 콘텐츠는 저작권자로부터 사용 허락 및 화이트리스트 승인을 받았습니다.\n더 랍스터는 아마존프라임 IP 우회후 개별 구매로 시청 가능합니다\n한글자막은 없습니다\n\n어퍼컷Tube 맴버십 가입 링크\nhttps://www.youtube.com/channel/UCuK80YHBZyyKrr2B1oHrgrw/join", "독신을 불법으로 지정하면 벌어지는 일", 3093, false, "0Z7CMK86Mb4", "https://www.youtube.com/watch?v=0Z7CMK86Mb4", "/downloads/어퍼컷Tube/2026-08-21 독신을 불법으로 지정하면 벌어지는 일/독신을 불법으로 지정하면 벌어지는 일 [0Z7CMK86Mb4].mp4", false, 3, ~U[2026-08-21 10:00:14Z]] 03:01:21.615 [debug] QUERY OK source="sources" db=0.3ms idle=9.0ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z], 3] 03:01:21.617 [debug] QUERY OK source="media_items" db=1.8ms idle=8.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 03:01:21.628 [debug] QUERY OK source="tasks" db=0.4ms idle=3.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16359, 47311, ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z]] 03:01:21.630 [debug] QUERY OK source="media_items" db=2.2ms idle=3.3ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 03:01:21.632 [debug] QUERY OK source="media_items" db=0.9ms idle=5.0ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 03:01:21.634 [debug] QUERY OK source="tasks" db=0.3ms idle=5.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16360, 3, ~U[2026-10-18 03:01:21Z], ~U[2026-10-18 03:01:21Z]] 03:01:21.634 [info] {"args":{"id":47311},"id":16359,"meta":{},"system_time":1792292481634794968,"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"]} 03:01:21.635 [debug] QUERY OK source="media_items" db=0.1ms idle=1.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" = ?) [47311] 03:01:21.635 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:01:21.635 [debug] QUERY OK source="sources" db=0.1ms idle=1.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:01:21.635 [info] {"args":{"id":3},"id":16326,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":32721021,"event":"job:stop","queue_time":444761,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:01:21.636 [debug] QUERY OK source="media_profiles" db=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] 03:01:21.636 [debug] QUERY OK source="media_items" db=0.1ms idle=1.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47311] 03:01:21.931 [debug] QUERY OK source="media_metadata" db=0.1ms idle=296.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" = ?) [47311] 03:01:21.932 [debug] QUERY OK source="media_profiles" db=0.1ms idle=296.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] 03:01:21.932 [debug] QUERY OK source="settings" db=0.0ms idle=296.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:21.932 [debug] QUERY OK source="settings" db=0.0ms idle=296.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:21.933 [debug] Running yt-dlp command for action: get_downloadable_status 03:01:22.011 [debug] QUERY OK source="settings" db=0.2ms idle=79.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:22.011 [debug] QUERY OK source="settings" db=0.0ms idle=79.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:22.011 [debug] QUERY OK source="settings" db=0.1ms idle=78.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:01:22.011 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x6LKg_aamzI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/98/66/9866062a59690f02cdb2cb6d0922d12ed0804cec35ff7d6275f9c5ede9f1aef5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:01:23.414 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x6LKg_aamzI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/98/66/9866062a59690f02cdb2cb6d0922d12ed0804cec35ff7d6275f9c5ede9f1aef5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one ERROR: [youtube] x6LKg_aamzI: Video unavailable 03:01:23.414 [error] yt-dlp download error for media item #47311: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] x6LKg_aamzI: Video unavailable\n" 03:01:23.414 [error] yt-dlp download will not be retried: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nERROR: [youtube] x6LKg_aamzI: Video unavailable\n" 03:01:23.415 [info] {"args":{"id":47311},"id":16359,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1779942,"event":"job:stop","queue_time":633819,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:01:25.279 [info] GET /media/15b8d471-9abc-4918-8a3d-3c163f658a69/stream 03:01:25.279 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "15b8d471-9abc-4918-8a3d-3c163f658a69", "v" => "1791947049"} Pipelines: [:maybe_basic_auth] 03:01:25.279 [debug] QUERY OK source="media_items" db=0.2ms idle=325.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["15b8d471-9abc-4918-8a3d-3c163f658a69"] 03:01:25.280 [debug] Invalid range request for media item: 15b8d471-9abc-4918-8a3d-3c163f658a69 - serving full file 03:01:25.280 [info] Sent 200 in 1ms 03:01:39.120 [info] {"source":"oban","duration":1020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:01:49.272 [info] GET /media/b6a34776-112c-4839-a439-5da6a8e39c87/stream 03:01:49.272 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "b6a34776-112c-4839-a439-5da6a8e39c87", "v" => "1792202411"} Pipelines: [:maybe_basic_auth] 03:01:49.273 [debug] QUERY OK source="media_items" db=0.2ms idle=291.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["b6a34776-112c-4839-a439-5da6a8e39c87"] 03:01:49.273 [debug] Invalid range request for media item: b6a34776-112c-4839-a439-5da6a8e39c87 - serving full file 03:01:49.273 [info] Sent 200 in 900µs 03:01:51.943 [info] GET /media/e0f844f8-64c0-4aff-b5f8-75eddf2a8432/stream 03:01:51.944 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "e0f844f8-64c0-4aff-b5f8-75eddf2a8432", "v" => "1791424816"} Pipelines: [:maybe_basic_auth] 03:01:51.944 [debug] QUERY OK source="media_items" db=0.3ms idle=960.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["e0f844f8-64c0-4aff-b5f8-75eddf2a8432"] 03:01:51.944 [debug] Invalid range request for media item: e0f844f8-64c0-4aff-b5f8-75eddf2a8432 - serving full file 03:01:51.944 [info] Sent 200 in 986µs 03:01:59.333 [info] GET /media/1cd07a32-6930-4241-9805-53f603d723a4/stream 03:01:59.334 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "1cd07a32-6930-4241-9805-53f603d723a4", "v" => "1791774049"} Pipelines: [:maybe_basic_auth] 03:01:59.334 [debug] QUERY OK source="media_items" db=0.3ms idle=278.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["1cd07a32-6930-4241-9805-53f603d723a4"] 03:01:59.334 [debug] Invalid range request for media item: 1cd07a32-6930-4241-9805-53f603d723a4 - serving full file 03:01:59.334 [info] Sent 200 in 971µs 03:02:00.322 [info] {"source":"oban","duration":216,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:02:04.927 [info] GET /media/6e0db744-39b4-4539-b691-7ce8c278bc95/stream 03:02:04.927 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "6e0db744-39b4-4539-b691-7ce8c278bc95", "v" => "1791615715"} Pipelines: [:maybe_basic_auth] 03:02:04.927 [debug] QUERY OK source="media_items" db=0.2ms idle=1834.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["6e0db744-39b4-4539-b691-7ce8c278bc95"] 03:02:04.927 [debug] Invalid range request for media item: 6e0db744-39b4-4539-b691-7ce8c278bc95 - serving full file 03:02:04.928 [info] Sent 200 in 993µs 03:02:09.123 [info] {"source":"oban","duration":1395,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:02:35.372 [info] GET /media/73208892-eeb9-46f1-a069-3ce3f7564fe7/stream 03:02:35.372 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "73208892-eeb9-46f1-a069-3ce3f7564fe7", "v" => "1788748866"} Pipelines: [:maybe_basic_auth] 03:02:35.373 [debug] QUERY OK source="media_items" db=0.3ms idle=279.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["73208892-eeb9-46f1-a069-3ce3f7564fe7"] 03:02:35.373 [debug] Invalid range request for media item: 73208892-eeb9-46f1-a069-3ce3f7564fe7 - serving full file 03:02:35.373 [info] Sent 200 in 818µs 03:02:39.124 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:02:58.018 [info] GET /media/4bc714b3-da09-4827-8660-8f65ad63a6c3/stream 03:02:58.018 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "4bc714b3-da09-4827-8660-8f65ad63a6c3", "v" => "1791946881"} Pipelines: [:maybe_basic_auth] 03:02:58.019 [debug] QUERY OK source="media_items" db=0.4ms idle=1743.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["4bc714b3-da09-4827-8660-8f65ad63a6c3"] 03:02:58.019 [debug] Invalid range request for media item: 4bc714b3-da09-4827-8660-8f65ad63a6c3 - serving full file 03:02:58.019 [info] Sent 200 in 1ms 03:03:00.323 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:03:03.931 [info] GET /media/28083016-3709-4da2-b9cf-267dbc6d6072/stream 03:03:03.931 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "28083016-3709-4da2-b9cf-267dbc6d6072", "v" => "1791943221"} Pipelines: [:maybe_basic_auth] 03:03:03.932 [debug] QUERY OK source="media_items" db=0.4ms idle=1657.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["28083016-3709-4da2-b9cf-267dbc6d6072"] 03:03:03.932 [debug] Invalid range request for media item: 28083016-3709-4da2-b9cf-267dbc6d6072 - serving full file 03:03:03.932 [info] Sent 200 in 1ms 03:03:09.161 [info] {"source":"oban","duration":35258,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:03:19.000 [info] GET /media/80b13588-a4c0-4e29-98a0-90a1848f6c1b/stream 03:03:19.000 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "80b13588-a4c0-4e29-98a0-90a1848f6c1b", "v" => "1792206369"} Pipelines: [:maybe_basic_auth] 03:03:19.000 [debug] QUERY OK source="media_items" db=0.3ms idle=1725.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["80b13588-a4c0-4e29-98a0-90a1848f6c1b"] 03:03:19.001 [debug] Invalid range request for media item: 80b13588-a4c0-4e29-98a0-90a1848f6c1b - serving full file 03:03:19.001 [info] Sent 200 in 972µs 03:03:39.162 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:03:43.528 [info] GET /media/bb22122a-241c-4fc7-8a87-2dd5d80bb351/stream 03:03:43.528 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "bb22122a-241c-4fc7-8a87-2dd5d80bb351", "v" => "1791428282"} Pipelines: [:maybe_basic_auth] 03:03:43.529 [debug] QUERY OK source="media_items" db=0.5ms idle=1253.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["bb22122a-241c-4fc7-8a87-2dd5d80bb351"] 03:03:43.529 [debug] Invalid range request for media item: bb22122a-241c-4fc7-8a87-2dd5d80bb351 - serving full file 03:03:43.529 [info] Sent 200 in 1ms 03:03:44.175 [info] {"args":{"id":4},"id":16329,"meta":{},"system_time":1792292624175777859,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:03:44.333 [debug] QUERY OK source="sources" db=156.8ms idle=1008.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" = ?) [4] 03:03:44.333 [debug] QUERY OK source="settings" db=0.2ms idle=1058.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:44.338 [debug] QUERY OK source="media_items" db=5.0ms idle=804.3ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 03:03:44.339 [debug] QUERY OK source="media_items" db=0.5ms idle=170.1ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 03:03:44.339 [debug] QUERY OK source="media_profiles" db=0.0ms idle=164.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] 03:03:44.340 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:44.340 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:44.342 [debug] QUERY OK source="media_items" db=1.7ms idle=2.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" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [4] 03:03:44.343 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 03:03:44.344 [debug] Current batch of media processed. Will check again in 1000ms 03:03:44.344 [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 [] 03:03:44.344 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:44.344 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:44.344 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@yunjadong --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/0e/2f/0e2f53d124320c97d182c4b896a1e907ec60d251c689efc4ede20c2c42aaef49.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/92/fd/92fda30cc195ae236bf8f062381caedf33bf0f1e94c5aed38a00dbcd18a60b8e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:45.344 [debug] Current batch of media processed. Will check again in 1000ms 03:03:46.345 [debug] Current batch of media processed. Will check again in 1000ms 03:03:47.346 [debug] Current batch of media processed. Will check again in 1000ms 03:03:48.348 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "ChatGPT를 처음 쓰는 분을 위한 웹(chatgpt.com) 사용 설명서입니다.\n가입과 요금제부터 화면 구석구석, 첫 질문, 질문 잘하는 법(공식 4요소), 모델 고르기, 파일 요약·이미지 만들기·웹 검색·음성, 대화 관리, 설정, 사용량과 한도, 실전 활용, 실제 사용자 후기와 꿀팁, 단점까지 OpenAI 공식 자료를 따라 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:26 이 영상에서 배울 것\n1:02 ChatGPT란? 검색창과 다른 점\n1:47 시작하기 · 로그인 없이 질문 · 가입\n3:06 요금제 (Free·Go·Plus·Pro·Business)\n4:23 화면 해부\n5:38 첫 대화 · 답 아래 버튼 · 메시지 편집\n7:03 질문 잘하는 법 (공식 4요소)\n7:35 같은 질문 4단계 비교 (냉장고 사진)\n9:02 모델 고르기 (추론 수준)\n10:21 파일 요약 · 이미지 만들기 · 웹 검색 · 음성\n12:15 대화 관리 · 검색 · 임시 채팅 · 프로젝트\n13:16 설정 (메모리·말투·학습 끄기·보안)\n14:30 사용량과 한도\n15:12 실전 활용 3가지\n16:07 사용자 후기\n17:10 사용자 꿀팁 7가지\n18:20 단점 6가지\n19:38 초보가 가장 많이 하는 실수\n20:12 한 장 정리\n\n📚 영상에서 따라 한 공식 자료\n- ChatGPT 시작하기(OpenAI Academy): https://openai.com/academy/getting-started/\n- 프롬프트 작성법: https://learn.chatgpt.com/docs/prompting\n- 요금제: https://chatgpt.com/pricing\n- 모델과 추론 수준: https://help.openai.com/en/articles/11909943\n- 파일 업로드 FAQ: https://help.openai.com/en/articles/8555545\n- 웹 검색: https://help.openai.com/en/articles/9237897\n- 임시 채팅 FAQ: https://help.openai.com/en/articles/8914046\n- 메모리: https://help.openai.com/en/articles/8590148\n- 데이터 제어(학습 끄기): https://help.openai.com/en/articles/7730893\n\n🎬 왕초보 탈출 시리즈\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n- Orca 왕초보 탈출하기: https://youtu.be/eyiW3-h3Pfs\n- Herdr 왕초보 탈출하기: https://youtu.be/lA_l6uDDh-I\n- Aside 왕초보 탈출하기: https://youtu.be/P686evjMs6A\n\nℹ️ 참고\n- 2026년 10월 ChatGPT 웹 화면으로 촬영했습니다. 제 화면은 Pro 요금제라 요금제에 따라 보이는 메뉴가 조금씩 다르고, 메뉴 이름·위치는 바뀔 수 있습니다.\n- 요금은 2026년 10월 한국 요금제 페이지 기준입니다.\n- 화면 속 기존 대화와 개인 정보는 흐리게 가렸습니다.\n- 실습 자료(냉장고 사진, 문화센터 안내문)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: 루리웹, 더쿠, 브런치, 유튜브 댓글, Reddit", "duration" => 1242, "filename" => "/downloads/윤자동/2026-10-17 챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지/챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지 [uXKWCO-9DVo].mp4", "id" => "uXKWCO-9DVo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uXKWCO-9DVo", "playlist_index" => 1, "timestamp" => 1792227613, "title" => "챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지", "upload_date" => "20261017"} 03:03:48.348 [debug] QUERY OK source="sources" db=0.3ms idle=175.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:48.349 [debug] QUERY OK source="sources" db=0.1ms idle=74.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" = ?) [4] 03:03:48.350 [debug] QUERY OK source="media_items" db=1.1ms idle=74.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-17 09:00:13Z], 4] 03:03:48.437 [debug] QUERY OK source="media_items" db=86.6ms idle=75.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ChatGPT를 처음 쓰는 분을 위한 웹(chatgpt.com) 사용 설명서입니다.\n가입과 요금제부터 화면 구석구석, 첫 질문, 질문 잘하는 법(공식 4요소), 모델 고르기, 파일 요약·이미지 만들기·웹 검색·음성, 대화 관리, 설정, 사용량과 한도, 실전 활용, 실제 사용자 후기와 꿀팁, 단점까지 OpenAI 공식 자료를 따라 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:26 이 영상에서 배울 것\n1:02 ChatGPT란? 검색창과 다른 점\n1:47 시작하기 · 로그인 없이 질문 · 가입\n3:06 요금제 (Free·Go·Plus·Pro·Business)\n4:23 화면 해부\n5:38 첫 대화 · 답 아래 버튼 · 메시지 편집\n7:03 질문 잘하는 법 (공식 4요소)\n7:35 같은 질문 4단계 비교 (냉장고 사진)\n9:02 모델 고르기 (추론 수준)\n10:21 파일 요약 · 이미지 만들기 · 웹 검색 · 음성\n12:15 대화 관리 · 검색 · 임시 채팅 · 프로젝트\n13:16 설정 (메모리·말투·학습 끄기·보안)\n14:30 사용량과 한도\n15:12 실전 활용 3가지\n16:07 사용자 후기\n17:10 사용자 꿀팁 7가지\n18:20 단점 6가지\n19:38 초보가 가장 많이 하는 실수\n20:12 한 장 정리\n\n📚 영상에서 따라 한 공식 자료\n- ChatGPT 시작하기(OpenAI Academy): https://openai.com/academy/getting-started/\n- 프롬프트 작성법: https://learn.chatgpt.com/docs/prompting\n- 요금제: https://chatgpt.com/pricing\n- 모델과 추론 수준: https://help.openai.com/en/articles/11909943\n- 파일 업로드 FAQ: https://help.openai.com/en/articles/8555545\n- 웹 검색: https://help.openai.com/en/articles/9237897\n- 임시 채팅 FAQ: https://help.openai.com/en/articles/8914046\n- 메모리: https://help.openai.com/en/articles/8590148\n- 데이터 제어(학습 끄기): https://help.openai.com/en/articles/7730893\n\n🎬 왕초보 탈출 시리즈\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n- Orca 왕초보 탈출하기: https://youtu.be/eyiW3-h3Pfs\n- Herdr 왕초보 탈출하기: https://youtu.be/lA_l6uDDh-I\n- Aside 왕초보 탈출하기: https://youtu.be/P686evjMs6A\n\nℹ️ 참고\n- 2026년 10월 ChatGPT 웹 화면으로 촬영했습니다. 제 화면은 Pro 요금제라 요금제에 따라 보이는 메뉴가 조금씩 다르고, 메뉴 이름·위치는 바뀔 수 있습니다.\n- 요금은 2026년 10월 한국 요금제 페이지 기준입니다.\n- 화면 속 기존 대화와 개인 정보는 흐리게 가렸습니다.\n- 실습 자료(냉장고 사진, 문화센터 안내문)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: 루리웹, 더쿠, 브런치, 유튜브 댓글, Reddit", "챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지", "53971184-e7d9-434c-9883-a0bc31b27db3", false, 1242, false, "uXKWCO-9DVo", "https://www.youtube.com/watch?v=uXKWCO-9DVo", 1, "/downloads/윤자동/2026-10-17 챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지/챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지 [uXKWCO-9DVo].mp4", false, false, 4, [], 99, ~U[2026-10-17 09:00:13Z], ~U[2026-10-18 03:03:48Z], ~U[2026-10-18 03:03:48Z], "ChatGPT를 처음 쓰는 분을 위한 웹(chatgpt.com) 사용 설명서입니다.\n가입과 요금제부터 화면 구석구석, 첫 질문, 질문 잘하는 법(공식 4요소), 모델 고르기, 파일 요약·이미지 만들기·웹 검색·음성, 대화 관리, 설정, 사용량과 한도, 실전 활용, 실제 사용자 후기와 꿀팁, 단점까지 OpenAI 공식 자료를 따라 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:26 이 영상에서 배울 것\n1:02 ChatGPT란? 검색창과 다른 점\n1:47 시작하기 · 로그인 없이 질문 · 가입\n3:06 요금제 (Free·Go·Plus·Pro·Business)\n4:23 화면 해부\n5:38 첫 대화 · 답 아래 버튼 · 메시지 편집\n7:03 질문 잘하는 법 (공식 4요소)\n7:35 같은 질문 4단계 비교 (냉장고 사진)\n9:02 모델 고르기 (추론 수준)\n10:21 파일 요약 · 이미지 만들기 · 웹 검색 · 음성\n12:15 대화 관리 · 검색 · 임시 채팅 · 프로젝트\n13:16 설정 (메모리·말투·학습 끄기·보안)\n14:30 사용량과 한도\n15:12 실전 활용 3가지\n16:07 사용자 후기\n17:10 사용자 꿀팁 7가지\n18:20 단점 6가지\n19:38 초보가 가장 많이 하는 실수\n20:12 한 장 정리\n\n📚 영상에서 따라 한 공식 자료\n- ChatGPT 시작하기(OpenAI Academy): https://openai.com/academy/getting-started/\n- 프롬프트 작성법: https://learn.chatgpt.com/docs/prompting\n- 요금제: https://chatgpt.com/pricing\n- 모델과 추론 수준: https://help.openai.com/en/articles/11909943\n- 파일 업로드 FAQ: https://help.openai.com/en/articles/8555545\n- 웹 검색: https://help.openai.com/en/articles/9237897\n- 임시 채팅 FAQ: https://help.openai.com/en/articles/8914046\n- 메모리: https://help.openai.com/en/articles/8590148\n- 데이터 제어(학습 끄기): https://help.openai.com/en/articles/7730893\n\n🎬 왕초보 탈출 시리즈\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n- Orca 왕초보 탈출하기: https://youtu.be/eyiW3-h3Pfs\n- Herdr 왕초보 탈출하기: https://youtu.be/lA_l6uDDh-I\n- Aside 왕초보 탈출하기: https://youtu.be/P686evjMs6A\n\nℹ️ 참고\n- 2026년 10월 ChatGPT 웹 화면으로 촬영했습니다. 제 화면은 Pro 요금제라 요금제에 따라 보이는 메뉴가 조금씩 다르고, 메뉴 이름·위치는 바뀔 수 있습니다.\n- 요금은 2026년 10월 한국 요금제 페이지 기준입니다.\n- 화면 속 기존 대화와 개인 정보는 흐리게 가렸습니다.\n- 실습 자료(냉장고 사진, 문화센터 안내문)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: 루리웹, 더쿠, 브런치, 유튜브 댓글, Reddit", "챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지", 1242, false, "uXKWCO-9DVo", "https://www.youtube.com/watch?v=uXKWCO-9DVo", "/downloads/윤자동/2026-10-17 챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지/챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지 [uXKWCO-9DVo].mp4", false, 4, ~U[2026-10-17 09:00:13Z]] 03:03:48.438 [debug] QUERY OK source="sources" db=0.3ms idle=163.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" = ?) [4] 03:03:48.438 [debug] QUERY OK source="media_profiles" db=0.1ms idle=89.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] 03:03:48.439 [debug] QUERY OK source="media_items" db=0.1ms idle=89.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 [50678] 03:03:48.439 [info] Kicking off download for media item #50678 (uXKWCO-9DVo) 03:03:48.441 [debug] QUERY OK source="tasks" db=0.1ms idle=2.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16361, 50678, ~U[2026-10-18 03:03:48Z], ~U[2026-10-18 03:03:48Z]] 03:03:48.441 [debug] Current batch of media processed. Will check again in 1000ms 03:03:48.447 [info] {"args":{"id":50678},"id":16361,"meta":{},"system_time":1792292628447603752,"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"]} 03:03:48.448 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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" = ?) [50678] 03:03:48.448 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:03:48.448 [debug] QUERY OK source="sources" db=0.1ms idle=7.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:48.448 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:48.449 [debug] QUERY OK source="media_items" db=0.2ms idle=7.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 [50678] 03:03:48.449 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [50678] 03:03:48.450 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:03:48.450 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:48.450 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:03:48.450 [debug] Running yt-dlp command for action: get_downloadable_status 03:03:48.529 [debug] QUERY OK source="settings" db=0.2ms idle=79.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:48.529 [debug] QUERY OK source="settings" db=0.1ms idle=79.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:48.529 [debug] QUERY OK source="settings" db=0.1ms idle=79.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:48.529 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uXKWCO-9DVo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6d/b0/6db03f43f24b48b186f44a08fbc12acfe79800bda6fdb3b2beec80ff3f57c6c4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:49.441 [debug] Current batch of media processed. Will check again in 1000ms 03:03:50.443 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "duration" => 1146, "filename" => "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", "id" => "eyiW3-h3Pfs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=eyiW3-h3Pfs", "playlist_index" => 2, "timestamp" => 1792141224, "title" => "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", "upload_date" => "20261016"} 03:03:50.444 [debug] QUERY OK source="sources" db=0.3ms idle=268.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:50.444 [debug] QUERY OK source="sources" db=0.1ms idle=169.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" = ?) [4] 03:03:50.446 [debug] QUERY OK source="media_items" db=1.7ms idle=169.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 09:00:24Z], 4] 03:03:50.459 [debug] QUERY OK source="media_items" db=12.0ms idle=172.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", "043a0b40-7873-410b-a261-796a949b0a51", false, 1146, false, "eyiW3-h3Pfs", "https://www.youtube.com/watch?v=eyiW3-h3Pfs", 2, "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", false, false, 4, [], 97, ~U[2026-10-16 09:00:24Z], ~U[2026-10-18 03:03:50Z], ~U[2026-10-18 03:03:50Z], "Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", 1146, false, "eyiW3-h3Pfs", "https://www.youtube.com/watch?v=eyiW3-h3Pfs", "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", false, 4, ~U[2026-10-16 09:00:24Z]] 03:03:50.460 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=185.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" = ?) [4] 03:03:50.461 [debug] QUERY OK source="media_profiles" db=0.1ms idle=16.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] 03:03:50.461 [debug] QUERY OK source="media_items" db=0.2ms 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 [50466] 03:03:50.461 [debug] Current batch of media processed. Will check again in 1000ms 03:03:51.122 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uXKWCO-9DVo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6d/b0/6db03f43f24b48b186f44a08fbc12acfe79800bda6fdb3b2beec80ff3f57c6c4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:03:51.122 [debug] Running yt-dlp command for action: download 03:03:51.123 [debug] QUERY OK source="settings" db=0.3ms idle=676.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:51.123 [debug] QUERY OK source="settings" db=0.1ms idle=663.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:51.123 [debug] QUERY OK source="settings" db=0.0ms idle=662.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:03:51.123 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uXKWCO-9DVo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/21/fe/21fe8a98ba93bd0e75ab7757930af1651554d1b5f69e0a3c4c8690b93b23f730.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:03:51.462 [debug] Current batch of media processed. Will check again in 1000ms 03:03:51.475 [info] GET /media/ecd4c116-02df-4195-802e-2b14a89aa109/stream 03:03:51.475 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "ecd4c116-02df-4195-802e-2b14a89aa109", "v" => "1792119043"} Pipelines: [:maybe_basic_auth] 03:03:51.476 [debug] QUERY OK source="media_items" db=0.6ms idle=1013.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["ecd4c116-02df-4195-802e-2b14a89aa109"] 03:03:51.476 [debug] Invalid range request for media item: ecd4c116-02df-4195-802e-2b14a89aa109 - serving full file 03:03:51.476 [info] Sent 200 in 1ms 03:03:52.846 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "duration" => 1162, "filename" => "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", "id" => "3quu283_05I", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=3quu283_05I", "playlist_index" => 3, "timestamp" => 1792138869, "title" => "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", "upload_date" => "20261016"} 03:03:52.847 [debug] QUERY OK source="sources" db=0.3ms idle=1370.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:52.847 [debug] QUERY OK source="sources" db=0.1ms idle=575.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" = ?) [4] 03:03:52.849 [debug] QUERY OK source="media_items" db=1.0ms idle=573.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 08:21:09Z], 4] 03:03:53.425 [debug] QUERY OK source="media_items" db=151.4ms queue=0.1ms idle=998.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", "da5919c2-e9ee-4a46-a264-cfb04fc064eb", false, 1162, false, "3quu283_05I", "https://www.youtube.com/watch?v=3quu283_05I", 3, "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", false, false, 4, [], 97, ~U[2026-10-16 08:21:09Z], ~U[2026-10-18 03:03:52Z], ~U[2026-10-18 03:03:52Z], "라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", 1162, false, "3quu283_05I", "https://www.youtube.com/watch?v=3quu283_05I", "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", false, 4, ~U[2026-10-16 08:21:09Z]] 03:03:53.426 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=577.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" = ?) [4] 03:03:53.427 [debug] QUERY OK source="media_profiles" db=1.0ms queue=0.1ms idle=578.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] 03:03:53.428 [debug] QUERY OK source="media_items" db=0.5ms idle=579.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50467] 03:03:53.429 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "duration" => 1288, "filename" => "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", "id" => "2TUZxslkX2A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=2TUZxslkX2A", "playlist_index" => 4, "timestamp" => 1792054828, "title" => "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", "upload_date" => "20261015"} 03:03:53.430 [debug] QUERY OK source="sources" db=0.2ms idle=152.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:53.430 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:53.432 [debug] QUERY OK source="media_items" db=1.9ms idle=4.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 09:00:28Z], 4] 03:03:53.435 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=5.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", "2ce9e87d-9b88-4a89-97ba-3530f40731fe", false, 1288, false, "2TUZxslkX2A", "https://www.youtube.com/watch?v=2TUZxslkX2A", 4, "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", false, false, 4, [], 98, ~U[2026-10-15 09:00:28Z], ~U[2026-10-18 03:03:53Z], ~U[2026-10-18 03:03:53Z], "터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", 1288, false, "2TUZxslkX2A", "https://www.youtube.com/watch?v=2TUZxslkX2A", "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", false, 4, ~U[2026-10-15 09:00:28Z]] 03:03:53.435 [debug] QUERY OK source="sources" db=0.2ms idle=6.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:03:53.436 [debug] QUERY OK source="media_profiles" db=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] 03:03:53.436 [debug] QUERY OK source="media_items" db=0.2ms idle=5.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50259] 03:03:53.436 [debug] Current batch of media processed. Will check again in 1000ms 03:03:54.437 [debug] Current batch of media processed. Will check again in 1000ms 03:03:55.439 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "duration" => 557, "filename" => "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", "id" => "wN3aDOyiZbA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=wN3aDOyiZbA", "playlist_index" => 5, "timestamp" => 1791968407, "title" => "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", "upload_date" => "20261014"} 03:03:55.439 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=162.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:55.440 [debug] QUERY OK source="sources" db=0.1ms idle=163.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" = ?) [4] 03:03:55.441 [debug] QUERY OK source="media_items" db=1.3ms idle=163.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 09:00:07Z], 4] 03:03:55.443 [debug] QUERY OK source="media_items" db=1.4ms idle=165.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", "4ea16fb3-1c4d-4808-bfb9-cc35d4feadac", false, 557, false, "wN3aDOyiZbA", "https://www.youtube.com/watch?v=wN3aDOyiZbA", 5, "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", false, false, 4, [], 98, ~U[2026-10-14 09:00:07Z], ~U[2026-10-18 03:03:55Z], ~U[2026-10-18 03:03:55Z], "AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", 557, false, "wN3aDOyiZbA", "https://www.youtube.com/watch?v=wN3aDOyiZbA", "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", false, 4, ~U[2026-10-14 09:00:07Z]] 03:03:55.444 [debug] QUERY OK source="sources" db=0.1ms idle=164.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" = ?) [4] 03:03:55.444 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:55.445 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [50045] 03:03:55.445 [debug] Current batch of media processed. Will check again in 1000ms 03:03:56.446 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o·노트북LM·베오 3)에서만 짧게 들려 드리고, 나머지는 소리를 껐습니다.\n\"지금 해 볼 것\"의 화면 그림은 누를 곳을 보여 드리기 위한 도식입니다. 무료 조건과 출처는 위 PDF에 있습니다.\n나레이션은 AI 복제 음성입니다. 썸네일은 AI로 만든 이미지이며, 로고는 영상에서 다루는 각 회사의 상표입니다. 배경음은 Mixkit 라이선스 음원입니다.\n\n▶ 공식 자료 (나온 순서)\n\n2022~2023\n- OpenAI, ChatGPT 공개 글 (2022.11.30, 웹 아카이브): https://web.archive.org/web/20221130211011/https://openai.com/blog/chatgpt/\n- OpenAI, GPT-4 발표 (2023.03.14): https://openai.com/index/gpt-4-research/\n- OpenAI, GPT-4 Developer Livestream: https://youtu.be/outcGtbnMuQ\n- Microsoft, Microsoft 365 Copilot 발표 (2023.03.16): https://blogs.microsoft.com/blog/2023/03/16/introducing-microsoft-365-copilot-your-copilot-for-work/\n- Adobe, 포토샵 생성형 채우기 발표 (2023.05.23): https://news.adobe.com/news/news-details/2023/adobe-unveils-future-of-creative-cloud-with-generative-ai-as-a-creative-co-pilot-in-photoshop\n- Adobe, Introducing Generative Fill: https://youtu.be/YGNiuuJflGI\n- Adobe Photoshop, Introduction to Generative Fill: https://youtu.be/Sp6K3qpVFO0\n- Runway, Gen-2 Now Available (2023.06.07): https://youtu.be/BpoOVEEDiFA\n- OpenAI, ChatGPT can now see, hear, and speak (2023.09.25): https://openai.com/index/chatgpt-can-now-see-hear-and-speak/\n- ElevenLabs, AI Dubbing Product Demo (2023.10.10): https://youtu.be/ulaLIx0GbnI\n- Google, The capabilities of multimodal AI | Gemini Demo (2023.12.06): https://youtu.be/UIZAiXYceBI\n\n2024\n- 삼성전자, 갤럭시 S24 갤럭시 AI 소개 영상 (2024.02.06): https://youtu.be/EkzSq1NnJBY\n- OpenAI, Sora 샘플 영상 (2024.02.15 연구 공개): https://cdn.openai.com/sora/videos/tokyo-walk.mp4\n- OpenAI, Live demo of GPT-4o realtime translation (2024.05.13): https://youtu.be/c2DFg53Zhvw\n- Google, NotebookLM 오디오 개요 발표와 샘플 오디오: https://blog.google/innovation-and-ai/products/notebooklm-audio-overviews/\n- Anthropic, Claude 3.5 모델과 컴퓨터 유즈 (2024.10.22): https://www.anthropic.com/news/3-5-models-and-computer-use\n- Anthropic, Computer use for automating operations: https://youtu.be/ODaHJzOyVCQ\n\n2025\n- OpenAI, Operator 발표 (2025.01.23): https://openai.com/index/introducing-operator/\n- OpenAI, Introduction to Operator & Agents: https://youtu.be/CSE77wAdDLg\n- OpenAI, deep research 발표 (2025.02.02): https://openai.com/index/introducing-deep-research/\n- OpenAI, deep research in practice: https://youtu.be/zm6F0vo2E64\n- Google, Introducing Veo 3: Old Sailor (2025.05.20): https://youtu.be/OW9q6SWTXt8\n- Google, Introducing Veo 3: A Wise Old Owl: https://youtu.be/Yqg0oUaofH0\n- OpenAI, ChatGPT agent 발표 (2025.07.17): https://openai.com/index/introducing-chatgpt-agent/\n- Made by Google, Nano Banana Image Generation and Editing in Gemini: https://youtu.be/uOVPdK5Fke4\n- 카카오, 카카오톡 ChatGPT (2025.10.31): https://youtu.be/4ntV5sSvZNU\n- 카카오, 이용자 수 발표: https://www.kakaocorp.com/page/detail/12107?lang=ENG\n\n2026\n- Anthropic, Introducing Cowork (2026.01.12): https://youtu.be/UAmKyyZ-b9E\n- Claude 릴리스 노트: https://support.claude.com/en/articles/12138966-release-notes\n- ByteDance Seed, Seedance 2.0 발표: https://seed.bytedance.com/en/blog/seedance-2-0-official-launch\n- BytePlus, Introducing Dreamina Seedance 2.0: https://youtu.be/l89woJ0jidw\n- Claude, Dispatch tasks to Claude Cowork from anywhere (2026.03.17): https://youtu.be/fVIV-L49eBs\n- Claude, Put Claude to work on your computer, from anywhere: https://youtu.be/N" <> ..., "duration" => 590, "filename" => "/downloads/윤자동/2026-10-13 편지 한 장 못 보내던 AI가 4년 만에 하는 일/편지 한 장 못 보내던 AI가 4년 만에 하는 일 [HQ8bmbvBCeI].mp4", "id" => "HQ8bmbvBCeI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=HQ8bmbvBCeI", "playlist_index" => 6, "timestamp" => 1791882021, "title" => "편지 한 장 못 보내던 AI가 4년 만에 하는 일", "upload_date" => "20261013"} 03:03:56.446 [debug] QUERY OK source="sources" db=0.1ms idle=1002.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:56.447 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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" = ?) [4] 03:03:56.448 [debug] QUERY OK source="media_items" db=0.9ms idle=1002.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-13 09:00:21Z], 4] 03:03:56.451 [debug] QUERY OK source="media_items" db=2.4ms idle=1003.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o·노트북LM·베오 3)에서만 짧게 들려 드리고, 나머지는 소리를 껐습니다.\n\"지금 해 볼 것\"의 화면 그림은 누를 곳을 보여 드리기 위한 도식입니다. 무료 조건과 출처는 위 PDF에 있습니다.\n나레이션은 AI 복제 음성입니다. 썸네일은 AI로 만든 이미지이며, 로고는 영상에서 다루는 각 회사의 상표입니다. 배경음은 Mixkit 라이선스 음원입니다.\n\n▶ 공식 자료 (나온 순서)\n\n2022~2023\n- OpenAI, ChatGPT 공개 글 (2022.11.30, 웹 아카이브): https://web.archive.org/web/20221130211011/https://openai.com/blog/chatgpt/\n- OpenAI, GPT-4 발표 (2023.03.14): https://openai.com/index/gpt-4-research/\n- OpenAI, GPT-4 Developer Livestream: https://youtu.be/outcGtbnMuQ\n- Microsoft, Microsoft 365 Copilot 발표 (2023.03.16): https://blogs.microsoft.com/blog/2023/03/16/introducing-microsoft-365-copilot-your-copilot-for-work/\n- Adobe, 포토샵 생성형 채우기 발표 (2023.05.23): https://news.adobe.com/news/news-details/2023/adobe-unveils-future-of-creative-cloud-with-generative-ai-as-a-creative-co-pilot-in-photoshop\n- Adobe, Introducing Generative Fill: https://youtu.be/YGNiuuJflGI\n- Adobe Photoshop, Introduction to Generative Fill: https://youtu.be/Sp6K3qpVFO0\n- Runway, Gen-2 Now Available (2023.06.07): https://youtu.be/BpoOVEEDiFA\n- OpenAI, ChatGPT can now see, hear, and speak (2023.09.25): https://openai.com/index/chatgpt-can-now-see-hear-and-speak/\n- ElevenLabs, AI Dubbing Product Demo (2023.10.10): https://youtu.be/ulaLIx0GbnI\n- Google, The capabilities of multimodal AI | Gemini Demo (2023.12.06): https://youtu.be/UIZAiXYceBI\n\n2024\n- 삼성전자, 갤럭시 S24 갤럭시 AI 소개 영상 (2024.02.06): https://youtu.be/EkzSq1NnJBY\n- OpenAI, Sora 샘플 영상 (2024.02.15 연구 공개): https://cdn.openai.com/sora/videos/tokyo-walk.mp4\n- OpenAI, Live demo of GPT-4o realtime translation (2024.05.13): https://youtu.be/c2DFg53Zhvw\n- Google, NotebookLM 오디오 개요 발표와 샘플 오디오: https://blog.google/innovation-and-ai/products/notebooklm-audio-overviews/\n- Anthropic, Claude 3.5 모델과 컴퓨터 유즈 (2024.10.22): https://www.anthropic.com/news/3-5-models-and-computer-use\n- Anthropic, Computer use for automating operations: https://youtu.be/ODaHJzOyVCQ\n\n2025\n- OpenAI, Operator 발표 (2025.01.23): https://openai.com/index/introducing-operator/\n- OpenAI, Introduction to Operator & Agents: https://youtu.be/CSE77wAdDLg\n- OpenAI, deep research 발표 (2025.02.02): https://openai.com/index/introducing-deep-research/\n- OpenAI, deep research in practice: https://youtu.be/zm6F0vo2E64\n- Google, Introducing Veo 3: Old Sailor (2025.05.20): https://youtu.be/OW9q6SWTXt8\n- Google, Introducing Veo 3: A Wise Old Owl: https://youtu.be/Yqg0oUaofH0\n- OpenAI, ChatGPT agent 발표 (2025.07.17): https://openai.com/index/introducing-chatgpt-agent/\n- Made by Google, Nano Banana Image Generation and Editing in Gemini: https://youtu.be/uOVPdK5Fke4\n- 카카오, 카카오톡 ChatGPT (2025.10.31): https://youtu.be/4ntV5sSvZNU\n- 카카오, 이용자 수 발표: https://www.kakaocorp.com/page/detail/12107?lang=ENG\n\n2026\n- Anthropic, Introducing Cowork (2026.01.12): https://youtu.be/UAmKyyZ-b9E\n- Claude 릴리스 노트: https://support.claude.com/en/articles/12138966-release-notes\n- ByteDance Seed, Seedance 2.0 발표: https://seed.bytedance.com/en/blog/seedance-2-0-official-launch\n- BytePlus, Introducing Dreamina Seedance 2.0: https://youtu.be/l89woJ0jidw\n- Claude, Dispatch tasks to Claude Cowork from anywhere (2026.03.17): https://youtu.be/fVIV-L49eBs\n- Claude, Put Claude to work on your computer, from anywhere: https://youtu.be/N" <> ..., "편지 한 장 못 보내던 AI가 4년 만에 하는 일", "c1475aad-cdab-42ed-ab05-77c5117d93a2", false, 590, false, "HQ8bmbvBCeI", "https://www.youtube.com/watch?v=HQ8bmbvBCeI", 6, "/downloads/윤자동/2026-10-13 편지 한 장 못 보내던 AI가 4년 만에 하는 일/편지 한 장 못 보내던 AI가 4년 만에 하는 일 [HQ8bmbvBCeI].mp4", false, false, 4, [], 98, ~U[2026-10-13 09:00:21Z], ~U[2026-10-18 03:03:56Z], ~U[2026-10-18 03:03:56Z], "📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o· (truncated) 03:03:56.451 [debug] QUERY OK source="sources" db=0.1ms idle=170.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" = ?) [4] 03:03:56.452 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:56.452 [debug] QUERY OK source="media_items" db=0.1ms idle=5.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 [49837] 03:03:56.452 [debug] Current batch of media processed. Will check again in 1000ms 03:03:57.452 [debug] Current batch of media processed. Will check again in 1000ms 03:03:58.454 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "duration" => 590, "filename" => "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", "id" => "UXL0v0s6tGo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=UXL0v0s6tGo", "playlist_index" => 7, "timestamp" => 1791795602, "title" => "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", "upload_date" => "20261012"} 03:03:58.454 [debug] QUERY OK source="sources" db=0.2ms idle=177.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:58.455 [debug] QUERY OK source="sources" db=0.1ms idle=177.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" = ?) [4] 03:03:58.456 [debug] QUERY OK source="media_items" db=0.9ms idle=178.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-12 09:00:02Z], 4] 03:03:58.457 [debug] QUERY OK source="media_items" db=1.0ms idle=179.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", "05326b51-e55a-428c-b51a-9bf9d03fd65c", false, 590, false, "UXL0v0s6tGo", "https://www.youtube.com/watch?v=UXL0v0s6tGo", 7, "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", false, false, 4, [], 98, ~U[2026-10-12 09:00:02Z], ~U[2026-10-18 03:03:58Z], ~U[2026-10-18 03:03:58Z], "\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", 590, false, "UXL0v0s6tGo", "https://www.youtube.com/watch?v=UXL0v0s6tGo", "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", false, 4, ~U[2026-10-12 09:00:02Z]] 03:03:58.457 [debug] QUERY OK source="sources" db=0.2ms idle=175.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" = ?) [4] 03:03:58.458 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:58.458 [debug] QUERY OK source="media_items" db=0.1ms idle=3.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49630] 03:03:58.458 [debug] Current batch of media processed. Will check again in 1000ms 03:03:59.460 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "duration" => 721, "filename" => "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", "id" => "d3ZeGZ5nHtI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", "playlist_index" => 8, "timestamp" => 1791709221, "title" => "카톡 답장 절반을 AI 직원한테 맡겼습니다", "upload_date" => "20261011"} 03:03:59.460 [debug] QUERY OK source="sources" db=0.2ms idle=1003.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:03:59.461 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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" = ?) [4] 03:03:59.462 [debug] QUERY OK source="media_items" db=1.0ms idle=1002.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-11 09:00:21Z], 4] 03:03:59.463 [debug] QUERY OK source="media_items" db=1.0ms idle=1003.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "카톡 답장 절반을 AI 직원한테 맡겼습니다", "00c6b69f-9cf6-4df9-a078-72ab117285d7", false, 721, false, "d3ZeGZ5nHtI", "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", 8, "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", false, false, 4, [], 98, ~U[2026-10-11 09:00:21Z], ~U[2026-10-18 03:03:59Z], ~U[2026-10-18 03:03:59Z], "제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "카톡 답장 절반을 AI 직원한테 맡겼습니다", 721, false, "d3ZeGZ5nHtI", "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", false, 4, ~U[2026-10-11 09:00:21Z]] 03:03:59.464 [debug] QUERY OK source="sources" db=0.1ms idle=180.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" = ?) [4] 03:03:59.464 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:03:59.464 [debug] QUERY OK source="media_items" db=0.1ms idle=3.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49424] 03:03:59.464 [debug] Current batch of media processed. Will check again in 1000ms 03:04:00.324 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:04:00.465 [debug] Current batch of media processed. Will check again in 1000ms 03:04:01.467 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "duration" => 701, "filename" => "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", "id" => "dQRsSM_ctFo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=dQRsSM_ctFo", "playlist_index" => 9, "timestamp" => 1791536400, "title" => "윤자동 신입사원 체험기 | SK일렉링크", "upload_date" => "20261009"} 03:04:01.467 [debug] QUERY OK source="sources" db=0.2ms idle=1143.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:01.468 [debug] QUERY OK source="sources" db=0.1ms idle=191.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" = ?) [4] 03:04:01.469 [debug] QUERY OK source="media_items" db=1.0ms idle=191.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 09:00:00Z], 4] 03:04:01.470 [debug] QUERY OK source="media_items" db=0.8ms idle=192.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "윤자동 신입사원 체험기 | SK일렉링크", "0197a33c-c03b-4783-b6ff-dd68460574fa", false, 701, false, "dQRsSM_ctFo", "https://www.youtube.com/watch?v=dQRsSM_ctFo", 9, "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", false, false, 4, [], 98, ~U[2026-10-09 09:00:00Z], ~U[2026-10-18 03:04:01Z], ~U[2026-10-18 03:04:01Z], "입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "윤자동 신입사원 체험기 | SK일렉링크", 701, false, "dQRsSM_ctFo", "https://www.youtube.com/watch?v=dQRsSM_ctFo", "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", false, 4, ~U[2026-10-09 09:00:00Z]] 03:04:01.470 [debug] QUERY OK source="sources" db=0.1ms idle=185.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" = ?) [4] 03:04:01.471 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:01.471 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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 [49006] 03:04:01.471 [debug] Current batch of media processed. Will check again in 1000ms 03:04:02.472 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "duration" => 388, "filename" => "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", "id" => "DgpGMlighhg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=DgpGMlighhg", "playlist_index" => 10, "timestamp" => 1791448912, "title" => "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", "upload_date" => "20261008"} 03:04:02.473 [debug] QUERY OK source="sources" db=0.3ms idle=1001.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:02.473 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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" = ?) [4] 03:04:02.474 [debug] QUERY OK source="media_items" db=0.8ms idle=1002.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-08 08:41:52Z], 4] 03:04:02.475 [debug] QUERY OK source="media_items" db=1.0ms idle=1002.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", "6c7c8168-f588-424f-aeb0-574aa23056e4", false, 388, false, "DgpGMlighhg", "https://www.youtube.com/watch?v=DgpGMlighhg", 10, "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", false, false, 4, [], 98, ~U[2026-10-08 08:41:52Z], ~U[2026-10-18 03:04:02Z], ~U[2026-10-18 03:04:02Z], "AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", 388, false, "DgpGMlighhg", "https://www.youtube.com/watch?v=DgpGMlighhg", "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", false, 4, ~U[2026-10-08 08:41:52Z]] 03:04:02.475 [debug] QUERY OK source="sources" db=0.1ms idle=189.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" = ?) [4] 03:04:02.476 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:02.476 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [48798] 03:04:02.476 [debug] Current batch of media processed. Will check again in 1000ms 03:04:03.476 [debug] Current batch of media processed. Will check again in 1000ms 03:04:04.478 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "duration" => 847, "filename" => "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", "id" => "KubQ-pNB1IQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=KubQ-pNB1IQ", "playlist_index" => 11, "timestamp" => 1791363636, "title" => "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", "upload_date" => "20261007"} 03:04:04.478 [debug] QUERY OK source="sources" db=0.2ms idle=201.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:04.479 [debug] QUERY OK source="sources" db=0.1ms idle=201.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" = ?) [4] 03:04:04.480 [debug] QUERY OK source="media_items" db=0.8ms idle=202.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 09:00:36Z], 4] 03:04:04.480 [debug] QUERY OK source="media_items" db=0.6ms idle=203.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", "4bfd2b9e-9f77-460d-9e13-06a0c7d7eb40", false, 847, false, "KubQ-pNB1IQ", "https://www.youtube.com/watch?v=KubQ-pNB1IQ", 11, "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", false, false, 4, [], 98, ~U[2026-10-07 09:00:36Z], ~U[2026-10-18 03:04:04Z], ~U[2026-10-18 03:04:04Z], "7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", 847, false, "KubQ-pNB1IQ", "https://www.youtube.com/watch?v=KubQ-pNB1IQ", "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", false, 4, ~U[2026-10-07 09:00:36Z]] 03:04:04.481 [debug] QUERY OK source="sources" db=0.1ms idle=191.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:04.481 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:04.481 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48592] 03:04:04.481 [debug] Current batch of media processed. Will check again in 1000ms 03:04:05.482 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "duration" => 986, "filename" => "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", "id" => "gFzWJSUdjFY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gFzWJSUdjFY", "playlist_index" => 12, "timestamp" => 1791277209, "title" => "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", "upload_date" => "20261006"} 03:04:05.482 [debug] QUERY OK source="sources" db=0.2ms idle=1001.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:05.482 [debug] QUERY OK source="sources" db=0.1ms idle=1001.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:05.484 [debug] QUERY OK source="media_items" db=1.1ms idle=1001.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 09:00:09Z], 4] 03:04:05.485 [debug] QUERY OK source="media_items" db=0.8ms idle=1002.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", "ad758bd6-0455-4b62-a9c0-0340249e9216", false, 986, false, "gFzWJSUdjFY", "https://www.youtube.com/watch?v=gFzWJSUdjFY", 12, "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", false, false, 4, [], 98, ~U[2026-10-06 09:00:09Z], ~U[2026-10-18 03:04:05Z], ~U[2026-10-18 03:04:05Z], "케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", 986, false, "gFzWJSUdjFY", "https://www.youtube.com/watch?v=gFzWJSUdjFY", "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", false, 4, ~U[2026-10-06 09:00:09Z]] 03:04:05.485 [debug] QUERY OK source="sources" db=0.1ms idle=194.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" = ?) [4] 03:04:05.486 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:05.486 [debug] QUERY OK source="media_items" db=0.1ms idle=3.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48384] 03:04:05.486 [debug] Current batch of media processed. Will check again in 1000ms 03:04:06.430 [info] GET /media/0e005dcf-dc75-4232-a5d0-0fdd5aea5461/stream 03:04:06.430 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "0e005dcf-dc75-4232-a5d0-0fdd5aea5461", "v" => "1791860447"} Pipelines: [:maybe_basic_auth] 03:04:06.430 [debug] QUERY OK source="media_items" db=0.2ms idle=945.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["0e005dcf-dc75-4232-a5d0-0fdd5aea5461"] 03:04:06.430 [debug] Invalid range request for media item: 0e005dcf-dc75-4232-a5d0-0fdd5aea5461 - serving full file 03:04:06.430 [info] Sent 200 in 818µs 03:04:06.753 [debug] Current batch of media processed. Will check again in 1000ms 03:04:07.755 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약과 답장 초안을 만듭니다.\n6. JEV테스트 라벨에 광고와 문의 메일을 각각 넣어 판정 기록과 Telegram 알림을 대조했습니다. 이번 작업 범위는 읽기·분류·초안 생성입니다.\n\n복사용 요청문 1 · 지난 메일 다시 읽기\n최근 1년 받은 메일을 JEV로 한 통씩 판정해 줘. 시작 전에 예상 비용과 외부 API로 전송되는 내용을 알려 줘. 질문은 대량 발송·자동 알림·구체적 요청·매출 기회·진행 중 거래·필요한 행동·무시 가능 여부·처리 경로로 나눠 줘. 답장 점수가 높은 메일을 보낸편지함과 대조하고, 다시 확인할 의뢰를 날짜·제목·보낸 사람으로 뽑아 줘. 원본은 읽기 전용으로 다루고 결과 목록을 별도 파일에 저장해 줘.\n\n복사용 요청문 2 · 앞으로 오는 메일\n먼저 테스트 라벨을 대상으로 만들어 줘. 주기 실행 작업의 앞단 스크립트가 Gmail을 읽고 JEV 플러그인의 API 클라이언트로 판정하게 해 줘. 확인할 메일이 있을 때 Hermes를 호출해 요약·답장 초안을 내 Telegram으로 보내 줘. 보안 단어·애매한 판정·API 오류는 사람이 확인하도록 알려 줘. 광고와 뉴스레터는 별도 분류하고 저녁에 목록을 보여 줘. 원본은 읽기 전용, 답장은 초안 생성까지로 범위를 정해 줘. 필요한 권한과 비용을 먼저 알려 주고 광고 1통·문의 1통으로 검증해 줘.\n\n실측과 계산 기준\n- 1년치: 2026-09-29, 11,370통, 입력 17,442,153토큰, 10개 병렬, 약 19분. JEV 판정 사용료를 원화로 환산·반올림하면 약 1,000원\n- 약 1,000원은 JEV의 메일 판정 사용료에 해당합니다. 원화 금액은 설명용 환산값입니다.\n- 코덱스 44시간: 기존 한 통 중앙값 14초 × 11,370통으로 계산한 예상 시간\n- 53%: JEV가 무시 항목으로 분류한 비율\n- 실제 답장한 외부 메일 876통과 대조했을 때, 36통이 무시 항목으로 분류됨\n- Hermes 배포: 이 서버에서 약 3분 30초\n- 광고 메일: Hermes 혼자 7.4초·12,770토큰 / JEV 먼저 0.6초·Hermes 0토큰. JEV 입력 약 1,000토큰의 판정 사용료 발생\n- 문의 메일: Hermes 혼자 11.8초·13,014토큰 / JEV 먼저 12.5초·13,017토큰\n- 별도 메일 비서 운영에서 68통을 점검했고 35%를 JEV 단계에서 처리\n- 맥 자동화 프로세스를 중지한 뒤 VPS의 Telegram 알림 수신 확인\n- 시연에는 가상 발신자의 테스트 메일 사용\n\n#JEV #제브 #AI자동화 #메일자동화 #헤르메스 #Hostinger", "duration" => 693, "filename" => "/downloads/윤자동/2026-10-05 JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계/JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계 [f0zt411z2yQ].mp4", "id" => "f0zt411z2yQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=f0zt411z2yQ", "playlist_index" => 13, "timestamp" => 1791190811, "title" => "JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계", "upload_date" => "20261005"} 03:04:07.756 [debug] QUERY OK source="sources" db=0.3ms idle=1325.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:07.756 [debug] QUERY OK source="sources" db=0.1ms idle=120.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" = ?) [4] 03:04:07.757 [debug] QUERY OK source="media_items" db=0.8ms idle=121.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 09:00:11Z], 4] 03:04:07.759 [debug] QUERY OK source="media_items" db=1.6ms idle=122.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약과 답장 초안을 만듭니다.\n6. JEV테스트 라벨에 광고와 문의 메일을 각각 넣어 판정 기록과 Telegram 알림을 대조했습니다. 이번 작업 범위는 읽기·분류·초안 생성입니다.\n\n복사용 요청문 1 · 지난 메일 다시 읽기\n최근 1년 받은 메일을 JEV로 한 통씩 판정해 줘. 시작 전에 예상 비용과 외부 API로 전송되는 내용을 알려 줘. 질문은 대량 발송·자동 알림·구체적 요청·매출 기회·진행 중 거래·필요한 행동·무시 가능 여부·처리 경로로 나눠 줘. 답장 점수가 높은 메일을 보낸편지함과 대조하고, 다시 확인할 의뢰를 날짜·제목·보낸 사람으로 뽑아 줘. 원본은 읽기 전용으로 다루고 결과 목록을 별도 파일에 저장해 줘.\n\n복사용 요청문 2 · 앞으로 오는 메일\n먼저 테스트 라벨을 대상으로 만들어 줘. 주기 실행 작업의 앞단 스크립트가 Gmail을 읽고 JEV 플러그인의 API 클라이언트로 판정하게 해 줘. 확인할 메일이 있을 때 Hermes를 호출해 요약·답장 초안을 내 Telegram으로 보내 줘. 보안 단어·애매한 판정·API 오류는 사람이 확인하도록 알려 줘. 광고와 뉴스레터는 별도 분류하고 저녁에 목록을 보여 줘. 원본은 읽기 전용, 답장은 초안 생성까지로 범위를 정해 줘. 필요한 권한과 비용을 먼저 알려 주고 광고 1통·문의 1통으로 검증해 줘.\n\n실측과 계산 기준\n- 1년치: 2026-09-29, 11,370통, 입력 17,442,153토큰, 10개 병렬, 약 19분. JEV 판정 사용료를 원화로 환산·반올림하면 약 1,000원\n- 약 1,000원은 JEV의 메일 판정 사용료에 해당합니다. 원화 금액은 설명용 환산값입니다.\n- 코덱스 44시간: 기존 한 통 중앙값 14초 × 11,370통으로 계산한 예상 시간\n- 53%: JEV가 무시 항목으로 분류한 비율\n- 실제 답장한 외부 메일 876통과 대조했을 때, 36통이 무시 항목으로 분류됨\n- Hermes 배포: 이 서버에서 약 3분 30초\n- 광고 메일: Hermes 혼자 7.4초·12,770토큰 / JEV 먼저 0.6초·Hermes 0토큰. JEV 입력 약 1,000토큰의 판정 사용료 발생\n- 문의 메일: Hermes 혼자 11.8초·13,014토큰 / JEV 먼저 12.5초·13,017토큰\n- 별도 메일 비서 운영에서 68통을 점검했고 35%를 JEV 단계에서 처리\n- 맥 자동화 프로세스를 중지한 뒤 VPS의 Telegram 알림 수신 확인\n- 시연에는 가상 발신자의 테스트 메일 사용\n\n#JEV #제브 #AI자동화 #메일자동화 #헤르메스 #Hostinger", "JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계", "0815551b-f7c3-42e5-98e0-32050cb0ab3a", false, 693, false, "f0zt411z2yQ", "https://www.youtube.com/watch?v=f0zt411z2yQ", 13, "/downloads/윤자동/2026-10-05 JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계/JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계 [f0zt411z2yQ].mp4", false, false, 4, [], 98, ~U[2026-10-05 09:00:11Z], ~U[2026-10-18 03:04:07Z], ~U[2026-10-18 03:04:07Z], "이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약 (truncated) 03:04:07.760 [debug] QUERY OK source="sources" db=0.1ms idle=123.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" = ?) [4] 03:04:07.760 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:07.760 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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 [48178] 03:04:07.760 [debug] Current batch of media processed. Will check again in 1000ms 03:04:08.762 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "duration" => 1073, "filename" => "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", "id" => "9qwO1IzMc0Q", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=9qwO1IzMc0Q", "playlist_index" => 14, "timestamp" => 1791104438, "title" => "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", "upload_date" => "20261004"} 03:04:08.762 [debug] QUERY OK source="sources" db=0.2ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:08.763 [debug] QUERY OK source="sources" db=0.2ms idle=1002.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" = ?) [4] 03:04:08.764 [debug] QUERY OK source="media_items" db=0.9ms idle=1002.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 09:00:38Z], 4] 03:04:08.765 [debug] QUERY OK source="media_items" db=0.8ms idle=1003.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", "766b337f-3a10-4841-a0b4-234bab8a6616", false, 1073, false, "9qwO1IzMc0Q", "https://www.youtube.com/watch?v=9qwO1IzMc0Q", 14, "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", false, false, 4, [], 98, ~U[2026-10-04 09:00:38Z], ~U[2026-10-18 03:04:08Z], ~U[2026-10-18 03:04:08Z], "라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", 1073, false, "9qwO1IzMc0Q", "https://www.youtube.com/watch?v=9qwO1IzMc0Q", "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", false, 4, ~U[2026-10-04 09:00:38Z]] 03:04:08.765 [debug] QUERY OK source="sources" db=0.1ms idle=128.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" = ?) [4] 03:04:08.766 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:08.766 [debug] QUERY OK source="media_items" db=0.1ms idle=3.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47974] 03:04:08.766 [debug] Current batch of media processed. Will check again in 1000ms 03:04:09.165 [info] {"source":"oban","duration":1158,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:04:09.767 [debug] Current batch of media processed. Will check again in 1000ms 03:04:10.769 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "duration" => 537, "filename" => "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", "id" => "tc314_9zH_s", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=tc314_9zH_s", "playlist_index" => 15, "timestamp" => 1791018000, "title" => "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", "upload_date" => "20261003"} 03:04:10.769 [debug] QUERY OK source="sources" db=0.2ms idle=134.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:10.770 [debug] QUERY OK source="sources" db=0.2ms idle=134.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" = ?) [4] 03:04:10.771 [debug] QUERY OK source="media_items" db=1.3ms idle=135.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 09:00:00Z], 4] 03:04:10.772 [debug] QUERY OK source="media_items" db=0.8ms idle=136.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", "3e7d6b43-9ce0-49b3-acdd-6fd5f7e38cfe", false, 537, false, "tc314_9zH_s", "https://www.youtube.com/watch?v=tc314_9zH_s", 15, "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", false, false, 4, [], 97, ~U[2026-10-03 09:00:00Z], ~U[2026-10-18 03:04:10Z], ~U[2026-10-18 03:04:10Z], "이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", 537, false, "tc314_9zH_s", "https://www.youtube.com/watch?v=tc314_9zH_s", "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", false, 4, ~U[2026-10-03 09:00:00Z]] 03:04:10.773 [debug] QUERY OK source="sources" db=0.1ms idle=133.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" = ?) [4] 03:04:10.773 [debug] QUERY OK source="media_profiles" db=0.0ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:10.773 [debug] QUERY OK source="media_items" db=0.1ms 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 [47766] 03:04:10.773 [debug] Current batch of media processed. Will check again in 1000ms 03:04:11.007 [info] GET /media/2c78dc36-e5aa-4c12-a623-aedf1f0dacc0/stream 03:04:11.007 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "2c78dc36-e5aa-4c12-a623-aedf1f0dacc0", "v" => "1791601140"} Pipelines: [:maybe_basic_auth] 03:04:11.008 [debug] QUERY OK source="media_items" db=0.4ms idle=236.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["2c78dc36-e5aa-4c12-a623-aedf1f0dacc0"] 03:04:11.008 [debug] Invalid range request for media item: 2c78dc36-e5aa-4c12-a623-aedf1f0dacc0 - serving full file 03:04:11.008 [info] Sent 200 in 1ms 03:04:11.775 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "duration" => 538, "filename" => "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", "id" => "zFQNgZn9hKo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=zFQNgZn9hKo", "playlist_index" => 16, "timestamp" => 1790999261, "title" => "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", "upload_date" => "20261003"} 03:04:11.775 [debug] QUERY OK source="sources" db=0.2ms idle=1002.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:11.776 [debug] QUERY OK source="sources" db=0.2ms idle=1002.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" = ?) [4] 03:04:11.777 [debug] QUERY OK source="media_items" db=0.9ms idle=1002.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 03:47:41Z], 4] 03:04:11.935 [debug] QUERY OK source="media_items" db=157.2ms idle=769.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", "1dc1563f-362d-4694-a6e3-c94faea9f650", false, 538, false, "zFQNgZn9hKo", "https://www.youtube.com/watch?v=zFQNgZn9hKo", 16, "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", false, false, 4, [], 97, ~U[2026-10-03 03:47:41Z], ~U[2026-10-18 03:04:11Z], ~U[2026-10-18 03:04:11Z], "로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", 538, false, "zFQNgZn9hKo", "https://www.youtube.com/watch?v=zFQNgZn9hKo", "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", false, 4, ~U[2026-10-03 03:47:41Z]] 03:04:11.935 [debug] QUERY OK source="sources" db=0.2ms idle=294.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" = ?) [4] 03:04:11.935 [debug] QUERY OK source="media_profiles" db=0.1ms idle=160.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] 03:04:11.936 [debug] QUERY OK source="media_items" db=0.1ms idle=159.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 [47767] 03:04:11.936 [debug] Current batch of media processed. Will check again in 1000ms 03:04:12.936 [debug] Current batch of media processed. Will check again in 1000ms 03:04:13.938 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "duration" => 507, "filename" => "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", "id" => "BFg_JcoGuX0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=BFg_JcoGuX0", "playlist_index" => 17, "timestamp" => 1790931647, "title" => "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", "upload_date" => "20261002"} 03:04:13.938 [debug] QUERY OK source="sources" db=0.2ms idle=303.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:13.939 [debug] QUERY OK source="sources" db=0.1ms idle=303.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" = ?) [4] 03:04:13.940 [debug] QUERY OK source="media_items" db=0.9ms idle=304.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-02 09:00:47Z], 4] 03:04:13.941 [debug] QUERY OK source="media_items" db=0.9ms idle=305.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", "0a475aef-f923-4a4a-9e09-21fdfb8fd3f3", false, 507, false, "BFg_JcoGuX0", "https://www.youtube.com/watch?v=BFg_JcoGuX0", 17, "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", false, false, 4, [], 98, ~U[2026-10-02 09:00:47Z], ~U[2026-10-18 03:04:13Z], ~U[2026-10-18 03:04:13Z], "윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", 507, false, "BFg_JcoGuX0", "https://www.youtube.com/watch?v=BFg_JcoGuX0", "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", false, 4, ~U[2026-10-02 09:00:47Z]] 03:04:13.941 [debug] QUERY OK source="sources" db=0.1ms idle=298.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" = ?) [4] 03:04:13.942 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:04:13.942 [debug] QUERY OK source="media_items" db=0.1ms 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 [47559] 03:04:13.942 [debug] Current batch of media processed. Will check again in 1000ms 03:04:14.942 [debug] Current batch of media processed. Will check again in 1000ms 03:04:15.944 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "duration" => 365, "filename" => "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", "id" => "xEV7i8WKdpc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xEV7i8WKdpc", "playlist_index" => 18, "timestamp" => 1790845227, "title" => "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", "upload_date" => "20261001"} 03:04:15.944 [debug] QUERY OK source="sources" db=0.3ms idle=309.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:15.945 [debug] QUERY OK source="sources" db=0.1ms idle=310.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" = ?) [4] 03:04:15.946 [debug] QUERY OK source="media_items" db=0.9ms idle=310.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-01 09:00:27Z], 4] 03:04:15.985 [debug] QUERY OK source="media_items" db=38.7ms idle=311.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", "36555bae-e180-4324-ae1d-40bb0c002acb", false, 365, false, "xEV7i8WKdpc", "https://www.youtube.com/watch?v=xEV7i8WKdpc", 18, "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", false, false, 4, [], 97, ~U[2026-10-01 09:00:27Z], ~U[2026-10-18 03:04:15Z], ~U[2026-10-18 03:04:15Z], "AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", 365, false, "xEV7i8WKdpc", "https://www.youtube.com/watch?v=xEV7i8WKdpc", "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", false, 4, ~U[2026-10-01 09:00:27Z]] 03:04:15.986 [debug] QUERY OK source="sources" db=0.2ms idle=340.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" = ?) [4] 03:04:15.986 [debug] QUERY OK source="media_profiles" db=0.2ms idle=41.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] 03:04:15.986 [debug] QUERY OK source="media_items" db=0.1ms idle=41.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 [47350] 03:04:15.987 [debug] Current batch of media processed. Will check again in 1000ms 03:04:16.988 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "duration" => 570, "filename" => "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", "id" => "9wao057EuSA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=9wao057EuSA", "playlist_index" => 19, "timestamp" => 1790828952, "title" => "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", "upload_date" => "20261001"} 03:04:16.988 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1003.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:16.989 [debug] QUERY OK source="sources" db=0.2ms idle=1003.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" = ?) [4] 03:04:16.990 [debug] QUERY OK source="media_items" db=0.8ms idle=1003.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-01 04:29:12Z], 4] 03:04:17.311 [debug] QUERY OK source="media_items" db=320.6ms idle=1003.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", "0d7a0f14-d822-4105-912b-953c04e9f821", false, 570, false, "9wao057EuSA", "https://www.youtube.com/watch?v=9wao057EuSA", 19, "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", false, false, 4, [], 97, ~U[2026-10-01 04:29:12Z], ~U[2026-10-18 03:04:16Z], ~U[2026-10-18 03:04:16Z], "AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", 570, false, "9wao057EuSA", "https://www.youtube.com/watch?v=9wao057EuSA", "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", false, 4, ~U[2026-10-01 04:29:12Z]] 03:04:17.312 [debug] QUERY OK source="sources" db=0.3ms idle=664.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" = ?) [4] 03:04:17.312 [debug] QUERY OK source="media_profiles" db=0.1ms idle=323.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] 03:04:17.312 [debug] QUERY OK source="media_items" db=0.1ms idle=323.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 [47351] 03:04:17.312 [debug] Current batch of media processed. Will check again in 1000ms 03:04:18.314 [debug] Current batch of media processed. Will check again in 1000ms 03:04:18.594 [info] GET /media/50841417-109c-44ee-ae6f-12d1bf7e2c0e/stream 03:04:18.594 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "50841417-109c-44ee-ae6f-12d1bf7e2c0e", "v" => "1789264831"} Pipelines: [:maybe_basic_auth] 03:04:18.594 [debug] QUERY OK source="media_items" db=0.3ms idle=1283.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["50841417-109c-44ee-ae6f-12d1bf7e2c0e"] 03:04:18.595 [debug] Invalid range request for media item: 50841417-109c-44ee-ae6f-12d1bf7e2c0e - serving full file 03:04:18.595 [info] Sent 200 in 971µs 03:04:18.635 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uXKWCO-9DVo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/21/fe/21fe8a98ba93bd0e75ab7757930af1651554d1b5f69e0a3c4c8690b93b23f730.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 03:04:18.681 [debug] Running yt-dlp command for action: download_thumbnail 03:04:18.682 [debug] QUERY OK source="settings" db=0.1ms idle=87.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:18.682 [debug] QUERY OK source="settings" db=0.1ms idle=47.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:18.682 [debug] QUERY OK source="settings" db=0.0ms idle=47.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:04:18.682 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uXKWCO-9DVo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50678/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/94/dc/94dc30158205b305b28946f25bdf5a4668bbbbafa4171ceb950dbfc4cacd3750.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:04:19.315 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "duration" => 351, "filename" => "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", "id" => "LXLXiFJmW5A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=LXLXiFJmW5A", "playlist_index" => 20, "timestamp" => 1790812496, "title" => "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", "upload_date" => "20260930"} 03:04:19.315 [debug] QUERY OK source="sources" db=0.2ms idle=680.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:19.316 [debug] QUERY OK source="sources" db=0.1ms idle=665.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" = ?) [4] 03:04:19.317 [debug] QUERY OK source="media_items" db=1.4ms idle=633.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-30 23:54:56Z], 4] 03:04:19.592 [debug] QUERY OK source="media_items" db=274.1ms idle=635.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", "b3108f55-2785-426a-9309-3d18f9947c51", false, 351, false, "LXLXiFJmW5A", "https://www.youtube.com/watch?v=LXLXiFJmW5A", 20, "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", false, false, 4, [], 96, ~U[2026-09-30 23:54:56Z], ~U[2026-10-18 03:04:19Z], ~U[2026-10-18 03:04:19Z], "제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", 351, false, "LXLXiFJmW5A", "https://www.youtube.com/watch?v=LXLXiFJmW5A", "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", false, 4, ~U[2026-09-30 23:54:56Z]] 03:04:19.592 [debug] QUERY OK source="sources" db=0.1ms idle=909.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" = ?) [4] 03:04:19.593 [debug] QUERY OK source="media_profiles" db=0.1ms idle=277.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] 03:04:19.593 [debug] QUERY OK source="media_items" db=0.1ms idle=277.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 [47142] 03:04:19.593 [debug] Current batch of media processed. Will check again in 1000ms 03:04:19.943 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@yunjadong --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/윤자동/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/0e/2f/0e2f53d124320c97d182c4b896a1e907ec60d251c689efc4ede20c2c42aaef49.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/92/fd/92fda30cc195ae236bf8f062381caedf33bf0f1e94c5aed38a00dbcd18a60b8e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 03:04:19.945 [debug] Gracefully stopping file follower 03:04:19.945 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=352.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 03:04:19.945 [debug] QUERY OK source="sources" db=0.1ms idle=352.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" = ?) [4] 03:04:19.948 [debug] QUERY OK source="media_items" db=2.9ms idle=352.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-17 09:00:13Z], 4] 03:04:19.950 [debug] QUERY OK source="media_items" db=1.3ms idle=355.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ChatGPT를 처음 쓰는 분을 위한 웹(chatgpt.com) 사용 설명서입니다.\n가입과 요금제부터 화면 구석구석, 첫 질문, 질문 잘하는 법(공식 4요소), 모델 고르기, 파일 요약·이미지 만들기·웹 검색·음성, 대화 관리, 설정, 사용량과 한도, 실전 활용, 실제 사용자 후기와 꿀팁, 단점까지 OpenAI 공식 자료를 따라 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:26 이 영상에서 배울 것\n1:02 ChatGPT란? 검색창과 다른 점\n1:47 시작하기 · 로그인 없이 질문 · 가입\n3:06 요금제 (Free·Go·Plus·Pro·Business)\n4:23 화면 해부\n5:38 첫 대화 · 답 아래 버튼 · 메시지 편집\n7:03 질문 잘하는 법 (공식 4요소)\n7:35 같은 질문 4단계 비교 (냉장고 사진)\n9:02 모델 고르기 (추론 수준)\n10:21 파일 요약 · 이미지 만들기 · 웹 검색 · 음성\n12:15 대화 관리 · 검색 · 임시 채팅 · 프로젝트\n13:16 설정 (메모리·말투·학습 끄기·보안)\n14:30 사용량과 한도\n15:12 실전 활용 3가지\n16:07 사용자 후기\n17:10 사용자 꿀팁 7가지\n18:20 단점 6가지\n19:38 초보가 가장 많이 하는 실수\n20:12 한 장 정리\n\n📚 영상에서 따라 한 공식 자료\n- ChatGPT 시작하기(OpenAI Academy): https://openai.com/academy/getting-started/\n- 프롬프트 작성법: https://learn.chatgpt.com/docs/prompting\n- 요금제: https://chatgpt.com/pricing\n- 모델과 추론 수준: https://help.openai.com/en/articles/11909943\n- 파일 업로드 FAQ: https://help.openai.com/en/articles/8555545\n- 웹 검색: https://help.openai.com/en/articles/9237897\n- 임시 채팅 FAQ: https://help.openai.com/en/articles/8914046\n- 메모리: https://help.openai.com/en/articles/8590148\n- 데이터 제어(학습 끄기): https://help.openai.com/en/articles/7730893\n\n🎬 왕초보 탈출 시리즈\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n- Orca 왕초보 탈출하기: https://youtu.be/eyiW3-h3Pfs\n- Herdr 왕초보 탈출하기: https://youtu.be/lA_l6uDDh-I\n- Aside 왕초보 탈출하기: https://youtu.be/P686evjMs6A\n\nℹ️ 참고\n- 2026년 10월 ChatGPT 웹 화면으로 촬영했습니다. 제 화면은 Pro 요금제라 요금제에 따라 보이는 메뉴가 조금씩 다르고, 메뉴 이름·위치는 바뀔 수 있습니다.\n- 요금은 2026년 10월 한국 요금제 페이지 기준입니다.\n- 화면 속 기존 대화와 개인 정보는 흐리게 가렸습니다.\n- 실습 자료(냉장고 사진, 문화센터 안내문)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: 루리웹, 더쿠, 브런치, 유튜브 댓글, Reddit", "챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지", "61172289-c41b-4fcd-a5dd-1ef983b0532b", false, 1242, false, "uXKWCO-9DVo", "https://www.youtube.com/watch?v=uXKWCO-9DVo", 1, "/downloads/윤자동/2026-10-17 챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지/챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지 [uXKWCO-9DVo].mp4", false, false, 4, [], 98, ~U[2026-10-17 09:00:13Z], ~U[2026-10-18 03:04:19Z], ~U[2026-10-18 03:04:19Z], "ChatGPT를 처음 쓰는 분을 위한 웹(chatgpt.com) 사용 설명서입니다.\n가입과 요금제부터 화면 구석구석, 첫 질문, 질문 잘하는 법(공식 4요소), 모델 고르기, 파일 요약·이미지 만들기·웹 검색·음성, 대화 관리, 설정, 사용량과 한도, 실전 활용, 실제 사용자 후기와 꿀팁, 단점까지 OpenAI 공식 자료를 따라 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:26 이 영상에서 배울 것\n1:02 ChatGPT란? 검색창과 다른 점\n1:47 시작하기 · 로그인 없이 질문 · 가입\n3:06 요금제 (Free·Go·Plus·Pro·Business)\n4:23 화면 해부\n5:38 첫 대화 · 답 아래 버튼 · 메시지 편집\n7:03 질문 잘하는 법 (공식 4요소)\n7:35 같은 질문 4단계 비교 (냉장고 사진)\n9:02 모델 고르기 (추론 수준)\n10:21 파일 요약 · 이미지 만들기 · 웹 검색 · 음성\n12:15 대화 관리 · 검색 · 임시 채팅 · 프로젝트\n13:16 설정 (메모리·말투·학습 끄기·보안)\n14:30 사용량과 한도\n15:12 실전 활용 3가지\n16:07 사용자 후기\n17:10 사용자 꿀팁 7가지\n18:20 단점 6가지\n19:38 초보가 가장 많이 하는 실수\n20:12 한 장 정리\n\n📚 영상에서 따라 한 공식 자료\n- ChatGPT 시작하기(OpenAI Academy): https://openai.com/academy/getting-started/\n- 프롬프트 작성법: https://learn.chatgpt.com/docs/prompting\n- 요금제: https://chatgpt.com/pricing\n- 모델과 추론 수준: https://help.openai.com/en/articles/11909943\n- 파일 업로드 FAQ: https://help.openai.com/en/articles/8555545\n- 웹 검색: https://help.openai.com/en/articles/9237897\n- 임시 채팅 FAQ: https://help.openai.com/en/articles/8914046\n- 메모리: https://help.openai.com/en/articles/8590148\n- 데이터 제어(학습 끄기): https://help.openai.com/en/articles/7730893\n\n🎬 왕초보 탈출 시리즈\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n- Orca 왕초보 탈출하기: https://youtu.be/eyiW3-h3Pfs\n- Herdr 왕초보 탈출하기: https://youtu.be/lA_l6uDDh-I\n- Aside 왕초보 탈출하기: https://youtu.be/P686evjMs6A\n\nℹ️ 참고\n- 2026년 10월 ChatGPT 웹 화면으로 촬영했습니다. 제 화면은 Pro 요금제라 요금제에 따라 보이는 메뉴가 조금씩 다르고, 메뉴 이름·위치는 바뀔 수 있습니다.\n- 요금은 2026년 10월 한국 요금제 페이지 기준입니다.\n- 화면 속 기존 대화와 개인 정보는 흐리게 가렸습니다.\n- 실습 자료(냉장고 사진, 문화센터 안내문)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: 루리웹, 더쿠, 브런치, 유튜브 댓글, Reddit", "챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지", 1242, false, "uXKWCO-9DVo", "https://www.youtube.com/watch?v=uXKWCO-9DVo", "/downloads/윤자동/2026-10-17 챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지/챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지 [uXKWCO-9DVo].mp4", false, 4, ~U[2026-10-17 09:00:13Z]] 03:04:19.951 [debug] QUERY OK source="sources" db=0.2ms idle=298.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" = ?) [4] 03:04:19.952 [debug] QUERY OK source="media_items" db=0.8ms idle=5.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 09:00:24Z], 4] 03:04:20.186 [debug] QUERY OK source="media_items" db=233.7ms idle=6.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", "f916f110-9fcf-4a1b-9163-6ed47479e557", false, 1146, false, "eyiW3-h3Pfs", "https://www.youtube.com/watch?v=eyiW3-h3Pfs", 2, "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", false, false, 4, [], 97, ~U[2026-10-16 09:00:24Z], ~U[2026-10-18 03:04:19Z], ~U[2026-10-18 03:04:19Z], "Claude Code, Codex 같은 AI 에이전트 여러 개를 한 화면에서 동시에 돌리는 무료 앱, Orca(오르카) 사용 설명서입니다.\n설치와 첫 실행부터 화면 구석구석, 설정, 공식 튜토리얼(에이전트 세 개 동시에 돌리기), 단축키, 내장 브라우저, 자동화, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:47 Orca란? Claude Code 하나와 다른 점\n1:58 준비물\n2:32 설치 (다운로드·Homebrew)\n3:31 첫 실행 설정 3단계 (Yolo 모드 끄기)\n4:28 첫 프로젝트 추가\n4:54 화면 해부: 왼쪽 사이드바\n6:49 가운데 탭과 빠른 명령\n7:18 오른쪽 사이드바·상태 표시줄\n8:02 설정 (한국어·외관·에이전트·알림)\n8:58 공식 튜토리얼: 에이전트 3개 동시에\n10:56 변경 확인·줄 메모·커밋\n12:15 단축키\n12:48 내장 브라우저와 요소 가져오기\n13:48 자동화 만들기\n15:06 플로팅 창·사용량·창 닫아도 계속\n15:36 사용자 후기\n16:25 사용자 꿀팁 6가지\n17:20 단점 6가지\n18:12 Orca가 느려지는 가장 흔한 이유\n18:36 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- Orca 문서: https://www.onorca.dev/docs\n- 설치: https://www.onorca.dev/docs/install\n- 첫 3-에이전트 세션(공식 튜토리얼): https://www.onorca.dev/docs/first-session\n- 자동화: https://www.onorca.dev/docs/cli/automations\n- 설정 전체: https://www.onorca.dev/docs/settings\n\n🎬 먼저 보면 좋은 영상\n- 클로드 코드 CLI 왕초보 탈출하기: https://youtu.be/2TUZxslkX2A\n\nℹ️ 참고\n- 촬영 버전 Orca 1.4.225 (2026년 10월). 거의 매일 업데이트되어 메뉴 위치·이름이 조금 다를 수 있습니다.\n- Orca는 무료 오픈소스(MIT)이고, AI 사용료는 각자 쓰는 Claude·ChatGPT 구독으로 냅니다.\n- 실습 자료(초록창 카페 홈페이지)는 교육용 가상 자료입니다.\n- 사용자 후기 출처: Reddit r/OrcaADE·r/ClaudeCode, Hacker News, Threads, note.com, OKKY, 유튜브 댓글, GitHub 이슈", "오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지", 1146, false, "eyiW3-h3Pfs", "https://www.youtube.com/watch?v=eyiW3-h3Pfs", "/downloads/윤자동/2026-10-16 오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지/오르카 Orca 왕초보 탈출하기 | 설치부터 메뉴 하나하나, AI 3개 동시에 돌리기까지 [eyiW3-h3Pfs].mp4", false, 4, ~U[2026-10-16 09:00:24Z]] 03:04:20.186 [debug] QUERY OK source="sources" db=0.2ms idle=237.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" = ?) [4] 03:04:20.187 [debug] QUERY OK source="media_items" db=0.9ms idle=236.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 08:21:09Z], 4] 03:04:20.189 [debug] QUERY OK source="media_items" db=0.8ms idle=237.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", "d1a6bffd-1957-4798-a0e5-8744f9ce1999", false, 1162, false, "3quu283_05I", "https://www.youtube.com/watch?v=3quu283_05I", 3, "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", false, false, 4, [], 97, ~U[2026-10-16 08:21:09Z], ~U[2026-10-18 03:04:20Z], ~U[2026-10-18 03:04:20Z], "라이브 중에 AI한테 \"시청자들 닉네임을 분석해서 캐릭터를 만들어 줘\"라고 한마디 했습니다.\n2분 46초 만에 시청자 캐릭터가 생겼고(라이브가 끝날 때는 157명), 그 캐릭터들이 돌아다니는 광장이 생겼고,\n시청자들이 채팅으로 낸 아이디어대로 OX 퀴즈, 가위바위보, 채팅 달리기, 핀볼까지 3시간 동안 게임 4개가 만들어졌습니다.\n게임하며 노는 동안 AI는 뒤에서 직원 숏폼 편집과 게시, 블로그 글 발행, 새 릴스 제작, 메일 30일 분석을 끝내 놨습니다.\n\n원본 라이브: 2026년 10월 15일 목요일 라이브\nhttps://www.youtube.com/watch?v=EO0fZu3YC-E\n\n이 영상에서 볼 수 있는 것\n- 말 한마디로 시청자 캐릭터와 라이브 광장이 만들어지는 과정(요청부터 결과까지 실제 걸린 시간)\n- AI에게 말로 지시하면 클로드 코드가 직접 코드를 쓰며 게임을 만드는 화면(배속)\n- 시청자 아이디어가 그대로 기능이 된 장면(말풍선, 레벨업, 후원 효과, 감옥, 달리기, 핀볼, 꼴찌가 1등)\n- 노는 동안 AI가 따로 끝낸 일 4개와 그날 쓴 사용량(월 200달러 요금제, 주간 사용량 2%)\n\n이 게임을 같이 기획해 주신 분들: @Ranae_ @2024Korea @Yoyager1206 @suria0124 @aitaleslap @김두한미공개 그리고 광장에 들어온 시청자 157명\n\n다음 주 목요일 라이브에서 AI한테 어떤 게임 만들라고 할까요? 댓글로 남겨 주세요.\n\n0:00 \"캐릭터 만들어 줘\" 한마디\n0:44 시청자가 캐릭터가 됐다\n2:52 말풍선 광장과 5만 원 후원\n7:02 강의실, OX 퀴즈, 가위바위보 감옥\n10:57 채팅 칠수록 빨라지는 달리기\n13:55 꼴찌가 1등인 핀볼\n17:31 그동안 AI가 끝낸 일 4개\n\n#AI #클로드코드 #ClaudeCode #AI자동화 #라이브 #윤자동 #게임만들기", "시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다", 1162, false, "3quu283_05I", "https://www.youtube.com/watch?v=3quu283_05I", "/downloads/윤자동/2026-10-16 시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다/시청자 캐릭터 만들어 달랬더니 3시간 만에 게임이 4개 생겼습니다 [3quu283_05I].mp4", false, 4, ~U[2026-10-16 08:21:09Z]] 03:04:20.189 [debug] QUERY OK source="sources" db=0.1ms idle=237.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" = ?) [4] 03:04:20.190 [debug] QUERY OK source="media_items" db=0.7ms idle=3.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 09:00:28Z], 4] 03:04:21.329 [debug] QUERY OK source="media_items" db=1138.7ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", "bd75a4fc-8135-441e-b0cb-281d8597dbd6", false, 1288, false, "2TUZxslkX2A", "https://www.youtube.com/watch?v=2TUZxslkX2A", 4, "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", false, false, 4, [], 98, ~U[2026-10-15 09:00:28Z], ~U[2026-10-18 03:04:20Z], ~U[2026-10-18 03:04:20Z], "터미널을 한 번도 안 써 본 분을 위한 Claude Code 사용 설명서입니다. 왕초보 탈출 시리즈 첫 편입니다.\n설치와 로그인부터 화면 구성, 메뉴 하나하나, 공식 튜토리얼, 실전 활용 3가지, 실제 사용자 후기와 꿀팁, 단점까지 천천히 정리했습니다.\n\n📌 따라 하다 막히면 AI 왕초보 공부방(오픈채팅)에서 질문하세요\nhttps://open.kakao.com/o/p4TSUhSi\n\n⏱ 목차\n0:00 인트로\n0:48 Claude Code란? 채팅 AI와 다른 점\n1:35 준비물 (컴퓨터·요금제·연습 폴더)\n2:13 터미널 열기와 설치\n3:36 첫 실행과 로그인\n4:53 첫 화면 해부와 한국어 설정\n6:35 명령어 메뉴(/) 전체 보기\n6:59 공식 튜토리얼 따라 하기\n8:19 입력 기본기 7가지\n10:13 모델과 생각 깊이(/model /effort)\n11:14 사용량과 컨텍스트(/usage /context)\n12:27 대화 관리(/clear /compact /resume)\n13:23 CLAUDE.md 규칙 기억시키기\n14:14 권한 모드\n15:15 스킬·MCP·플러그인\n16:04 막혔을 때(/help /powerup /doctor)\n16:39 실전 1 매출 보고서\n17:07 실전 2 영수증 → 엑셀\n17:29 실전 3 다운로드 폴더 정리\n17:57 사용자 후기\n18:46 사용자 꿀팁 5가지\n19:30 단점 6가지\n20:40 가장 많이 하는 실수\n21:02 한 장 정리\n\n📚 영상에서 따라 한 공식 문서\n- 빠른 시작: https://code.claude.com/docs/en/quickstart\n- 터미널 처음 쓰는 분을 위한 안내: https://code.claude.com/docs/en/terminal-guide\n- 설치: https://code.claude.com/docs/en/setup\n- 모범 사례: https://code.claude.com/docs/en/best-practices\n- CLAUDE.md(메모리): https://code.claude.com/docs/en/memory\n\nℹ️ 참고\n- 촬영 버전 Claude Code 2.1.299 (2026년 10월). 업데이트가 잦아 메뉴 위치·이름이 조금 다를 수 있습니다.\n- 실습 자료(초록창 카페)는 교육용 가상 자료입니다.\n- 요금은 공식 요금 페이지 기준(2026년 10월)이며 바뀔 수 있습니다.\n- 사용자 후기 출처: Reddit r/ClaudeAI·r/ClaudeCode, Hacker News, 클리앙, 브런치, Substack", "클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지", 1288, false, "2TUZxslkX2A", "https://www.youtube.com/watch?v=2TUZxslkX2A", "/downloads/윤자동/2026-10-15 클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지/클로드 코드 CLI 왕초보 탈출하기 | 설치부터 메뉴 하나하나, 실전 활용까지 [2TUZxslkX2A].mp4", false, 4, ~U[2026-10-15 09:00:28Z]] 03:04:21.330 [debug] QUERY OK source="sources" db=0.2ms idle=1140.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" = ?) [4] 03:04:21.331 [debug] QUERY OK source="media_items" db=0.9ms idle=1140.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 09:00:07Z], 4] 03:04:21.332 [debug] QUERY OK source="media_items" db=0.8ms idle=1141.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", "c01538c3-f468-4915-9192-dbdf0ab28a87", false, 557, false, "wN3aDOyiZbA", "https://www.youtube.com/watch?v=wN3aDOyiZbA", 5, "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", false, false, 4, [], 98, ~U[2026-10-14 09:00:07Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "AI한테 일을 맡겨도 결국 내가 다시 고치게 되는 이유, 현장 강의에서 직접 보여드린 장면으로 정리했습니다.\n프린터 설치를 맡긴 날, 저장하지 말랬는데 저장해 버린 AI, 엑셀 야근하던 2009년 이야기까지 담았습니다.\n\n이 영상에서 가져갈 것\n① 맥락 말하기: 역할·목적·마감을 구구절절 알려주기\n② 규칙 남기기: 매일 하는 설명은 규칙 파일(AGENTS.md)에\n③ 검산 시키기: 원본과 결과 대조까지 AI에게\n\n바로 써 보는 지시문\n1. 내 역할은 ○○이고, 이 결과는 ○○에 써. 마감은 ○○야.\n2. 다음에도 같은 방식으로 하게, 순서와 확인 기준을 규칙 파일에 적어.\n3. 원본과 결과를 대조해서, 안 맞는 것만 따로 알려줘.\n\n매일 반복하는데 아직 AI한테 못 맡긴 일, 댓글로 하나만 적어 주세요.\n\n원본 강의 촬영일: 2026년 10월 12일. 화면과 기능은 촬영 당시 기준입니다.\n\n0:00 AI 안 써봤으면 서류 탈락?\n0:15 프린터 설치를 AI에게 맡긴 날\n1:00 저장하지 말랬는데 저장한 AI\n1:49 2009년, 엑셀 야근\n3:24 방법 ① 구구절절 말하기\n5:16 방법 ② 규칙으로 남기기\n7:04 방법 ③ 검산까지 시키기\n9:00 바로 쓰는 지시문 3줄", "AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다", 557, false, "wN3aDOyiZbA", "https://www.youtube.com/watch?v=wN3aDOyiZbA", "/downloads/윤자동/2026-10-14 AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다/AI 안 써봤으면 서류 탈락, 이 회사 대표는 AI한테 이렇게 일 시킵니다 [wN3aDOyiZbA].mp4", false, 4, ~U[2026-10-14 09:00:07Z]] 03:04:21.332 [debug] QUERY OK source="sources" db=0.1ms idle=678.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" = ?) [4] 03:04:21.333 [debug] QUERY OK source="media_items" db=1.0ms idle=3.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-13 09:00:21Z], 4] 03:04:21.335 [debug] QUERY OK source="media_items" db=1.5ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o·노트북LM·베오 3)에서만 짧게 들려 드리고, 나머지는 소리를 껐습니다.\n\"지금 해 볼 것\"의 화면 그림은 누를 곳을 보여 드리기 위한 도식입니다. 무료 조건과 출처는 위 PDF에 있습니다.\n나레이션은 AI 복제 음성입니다. 썸네일은 AI로 만든 이미지이며, 로고는 영상에서 다루는 각 회사의 상표입니다. 배경음은 Mixkit 라이선스 음원입니다.\n\n▶ 공식 자료 (나온 순서)\n\n2022~2023\n- OpenAI, ChatGPT 공개 글 (2022.11.30, 웹 아카이브): https://web.archive.org/web/20221130211011/https://openai.com/blog/chatgpt/\n- OpenAI, GPT-4 발표 (2023.03.14): https://openai.com/index/gpt-4-research/\n- OpenAI, GPT-4 Developer Livestream: https://youtu.be/outcGtbnMuQ\n- Microsoft, Microsoft 365 Copilot 발표 (2023.03.16): https://blogs.microsoft.com/blog/2023/03/16/introducing-microsoft-365-copilot-your-copilot-for-work/\n- Adobe, 포토샵 생성형 채우기 발표 (2023.05.23): https://news.adobe.com/news/news-details/2023/adobe-unveils-future-of-creative-cloud-with-generative-ai-as-a-creative-co-pilot-in-photoshop\n- Adobe, Introducing Generative Fill: https://youtu.be/YGNiuuJflGI\n- Adobe Photoshop, Introduction to Generative Fill: https://youtu.be/Sp6K3qpVFO0\n- Runway, Gen-2 Now Available (2023.06.07): https://youtu.be/BpoOVEEDiFA\n- OpenAI, ChatGPT can now see, hear, and speak (2023.09.25): https://openai.com/index/chatgpt-can-now-see-hear-and-speak/\n- ElevenLabs, AI Dubbing Product Demo (2023.10.10): https://youtu.be/ulaLIx0GbnI\n- Google, The capabilities of multimodal AI | Gemini Demo (2023.12.06): https://youtu.be/UIZAiXYceBI\n\n2024\n- 삼성전자, 갤럭시 S24 갤럭시 AI 소개 영상 (2024.02.06): https://youtu.be/EkzSq1NnJBY\n- OpenAI, Sora 샘플 영상 (2024.02.15 연구 공개): https://cdn.openai.com/sora/videos/tokyo-walk.mp4\n- OpenAI, Live demo of GPT-4o realtime translation (2024.05.13): https://youtu.be/c2DFg53Zhvw\n- Google, NotebookLM 오디오 개요 발표와 샘플 오디오: https://blog.google/innovation-and-ai/products/notebooklm-audio-overviews/\n- Anthropic, Claude 3.5 모델과 컴퓨터 유즈 (2024.10.22): https://www.anthropic.com/news/3-5-models-and-computer-use\n- Anthropic, Computer use for automating operations: https://youtu.be/ODaHJzOyVCQ\n\n2025\n- OpenAI, Operator 발표 (2025.01.23): https://openai.com/index/introducing-operator/\n- OpenAI, Introduction to Operator & Agents: https://youtu.be/CSE77wAdDLg\n- OpenAI, deep research 발표 (2025.02.02): https://openai.com/index/introducing-deep-research/\n- OpenAI, deep research in practice: https://youtu.be/zm6F0vo2E64\n- Google, Introducing Veo 3: Old Sailor (2025.05.20): https://youtu.be/OW9q6SWTXt8\n- Google, Introducing Veo 3: A Wise Old Owl: https://youtu.be/Yqg0oUaofH0\n- OpenAI, ChatGPT agent 발표 (2025.07.17): https://openai.com/index/introducing-chatgpt-agent/\n- Made by Google, Nano Banana Image Generation and Editing in Gemini: https://youtu.be/uOVPdK5Fke4\n- 카카오, 카카오톡 ChatGPT (2025.10.31): https://youtu.be/4ntV5sSvZNU\n- 카카오, 이용자 수 발표: https://www.kakaocorp.com/page/detail/12107?lang=ENG\n\n2026\n- Anthropic, Introducing Cowork (2026.01.12): https://youtu.be/UAmKyyZ-b9E\n- Claude 릴리스 노트: https://support.claude.com/en/articles/12138966-release-notes\n- ByteDance Seed, Seedance 2.0 발표: https://seed.bytedance.com/en/blog/seedance-2-0-official-launch\n- BytePlus, Introducing Dreamina Seedance 2.0: https://youtu.be/l89woJ0jidw\n- Claude, Dispatch tasks to Claude Cowork from anywhere (2026.03.17): https://youtu.be/fVIV-L49eBs\n- Claude, Put Claude to work on your computer, from anywhere: https://youtu.be/N" <> ..., "편지 한 장 못 보내던 AI가 4년 만에 하는 일", "127d40ac-edb9-47b2-9fbf-f4a19d809e0d", false, 590, false, "HQ8bmbvBCeI", "https://www.youtube.com/watch?v=HQ8bmbvBCeI", 6, "/downloads/윤자동/2026-10-13 편지 한 장 못 보내던 AI가 4년 만에 하는 일/편지 한 장 못 보내던 AI가 4년 만에 하는 일 [HQ8bmbvBCeI].mp4", false, false, 4, [], 98, ~U[2026-10-13 09:00:21Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "📄 AI 4년 변화 연표와 지금 무료로 써 볼 AI 5가지 PDF\n→ https://www.yunjadong.com/product/46?utm_source=youtube&utm_medium=social&utm_campaign=p065-ai4y&utm_content=desc\n\n2022년 11월, 챗GPT는 편지를 대신 보내 달라는 부탁에 \"보낼 수 없으니 직접 보내세요\"라고 답했습니다.\n1,399일 뒤인 2026년 9월, AI는 빠뜨린 청구서를 먼저 챙기고 보내도 되는지 묻습니다.\n그 사이 결정적인 장면을 네 단계로 짚고, 단계마다 지금 한국에서 무료로 해 볼 수 있는 것을 골랐습니다.\n\n자료 기준일: 2026년 10월 10일. 날짜는 각 회사 공식 발표문 원문 기준(대부분 미국 시간)입니다.\n\n▶ 챕터\n\n00:00 4년 전과 지금\n00:20 끝까지 보시면 얻는 것 3가지\n00:48 1단계 말을 알아듣다 (2022.11~2023.06)\n01:59 지금 해 볼 것 ① 카톡 속 챗GPT\n02:26 2단계 보고, 듣고, 말하다 (2023.09~2024.06)\n03:59 지금 해 볼 것 ② 음성으로 말 걸기\n04:19 3단계 손이 생기다 (2024.09~2025.07)\n05:49 AI 영상 4년 비교\n06:11 지금 해 볼 것 ③ 문서를 오디오로\n06:29 4단계 자기 컴퓨터를 갖다 (2025.08~2026.10)\n07:33 지금 해 볼 것 ④ 사진 편집 AI\n07:49 4년 정리와 무료 PDF\n08:25 다음 4년, 회사들이 밝힌 계획\n08:59 마지막 버튼을 끄는 스위치\n\n▶ 인용과 제작 고지\n\n영상 속 공식 시연·발표 화면은 해설과 비교를 위해 짧게 인용했고, 원본은 아래에 있습니다. 공식 시연 원음은 네 곳(일레븐랩스·GPT-4o·노 (truncated) 03:04:21.336 [debug] QUERY OK source="sources" db=0.2ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.337 [debug] QUERY OK source="media_items" db=0.7ms idle=4.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-12 09:00:02Z], 4] 03:04:21.338 [debug] QUERY OK source="media_items" db=0.6ms idle=4.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", "c6727635-c95d-4ff1-9f0a-c05a9c1be49a", false, 590, false, "UXL0v0s6tGo", "https://www.youtube.com/watch?v=UXL0v0s6tGo", 7, "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", false, false, 4, [], 98, ~U[2026-10-12 09:00:02Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "\"근데 세상이 너무 변해서 망하면 어떡하죠?\" 라이브 채팅에 올라온 질문입니다.\n저는 걱정 대신 \"오늘 할 수 있는 게 뭐지?\"를 먼저 묻습니다.\n그리고 기부하면 행복하다는 말을 거짓말인 줄 알았던 제가 기부를 해 보고 생각이 어떻게 바뀌었는지도 이야기했습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n- 예전 챗GPT와 지금 AI가 어떻게 다른지, 그리고 '해줘'의 시대\n- AI 시대에 오래 같이 일하려면 어떤 사람이 되어야 하는지에 대한 제 생각\n- 걱정이 커질 때 던지는 질문 하나와, 돈 벌어서 하고 싶은 일\n\n여러분은 돈 걱정이 없다면, 제일 먼저 뭘 하고 싶어요? 댓글로 하나만 남겨주세요.\n\n0:00 망하면 어떡하죠? 라이브 채팅 질문\n0:24 AI가 그렇게 달라요?\n1:49 AI 못 하면 어떻게 돼요?\n3:03 망하면 어떡하죠?\n4:51 돈 벌어서 뭐 해요?\n7:43 돈 많으면 뭐 할 건데요?\n\n#AI #AI시대 #챗GPT #에이전트 #윤자동 #기부 #걱정", "AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다", 590, false, "UXL0v0s6tGo", "https://www.youtube.com/watch?v=UXL0v0s6tGo", "/downloads/윤자동/2026-10-12 AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다/AI 때문에 망하면 어떡하냐고요? 저는 땅굴부터 팝니다 [UXL0v0s6tGo].mp4", false, 4, ~U[2026-10-12 09:00:02Z]] 03:04:21.338 [debug] QUERY OK source="sources" db=0.1ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.339 [debug] QUERY OK source="media_items" db=0.7ms idle=2.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-11 09:00:21Z], 4] 03:04:21.340 [debug] QUERY OK source="media_items" db=0.6ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "카톡 답장 절반을 AI 직원한테 맡겼습니다", "7c869822-a2de-497b-8744-da0fb148fbf7", false, 721, false, "d3ZeGZ5nHtI", "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", 8, "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", false, false, 4, [], 98, ~U[2026-10-11 09:00:21Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "제 카톡 채팅 절반은 AI가 보냅니다. 라이브 날 4천 명 오픈채팅방 대화 글자 수의 74%가 AI 직원 '클과장' 몫이었어요.\n아무 말에나 대답하지 않고, 회사 미니 PC 한 대에서 24시간 돌아갑니다.\n대신 저는 본 계정으로 봇을 돌리다 카톡 영구정지도 당해 봤습니다. 그 경험까지 다 담았습니다.\n\n원본 라이브: 2026년 10월 8일\n\n이 영상에서 얻을 수 있는 것\n1. AI가 카톡 입력칸에 직접 쓰고 보내는 실제 장면과 3일 2,100개 메시지 처리 기록\n2. 안드로이드·맥·윈도우별 준비물과 비용(중고폰 만 원, 알뜰폰 월 500원, AI는 적게 쓰면 월 천 원)\n3. 계정 정지·회사 단톡방 사고를 피하는 운영 규칙 5가지\n\n여러분 카톡에서 매일 반복하는 일, 하나만 댓글로 적어주세요.\n\n0:00 AI가 카톡 입력칸에 직접 쓰고 보내는 장면\n0:36 AI가 진짜 일해요? 하루 대화 74%가 AI\n1:32 아무 말에나 대답해요? 6초 판단과 프롬프트\n3:02 어디서 돌아가요? 미니 PC 속 옛날 안드로이드\n4:32 나도 할 수 있어요? 준비물과 비용\n6:58 정지 안 당하려면요? 영구정지 경험과 규칙 5\n9:04 그래서 어디에 써요? 대리점·출퇴근·운세방·방 키우기\n\n#카톡자동화 #카카오톡봇 #AI직원 #오픈채팅 #업무자동화 #클로드코드 #윤자동", "카톡 답장 절반을 AI 직원한테 맡겼습니다", 721, false, "d3ZeGZ5nHtI", "https://www.youtube.com/watch?v=d3ZeGZ5nHtI", "/downloads/윤자동/2026-10-11 카톡 답장 절반을 AI 직원한테 맡겼습니다/카톡 답장 절반을 AI 직원한테 맡겼습니다 [d3ZeGZ5nHtI].mp4", false, 4, ~U[2026-10-11 09:00:21Z]] 03:04:21.340 [debug] QUERY OK source="sources" db=0.1ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.341 [debug] QUERY OK source="media_items" db=0.6ms idle=2.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 09:00:00Z], 4] 03:04:21.342 [debug] QUERY OK source="media_items" db=0.9ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "윤자동 신입사원 체험기 | SK일렉링크", "27f40125-3084-4443-ba0d-170ac67ce172", false, 701, false, "dQRsSM_ctFo", "https://www.youtube.com/watch?v=dQRsSM_ctFo", 9, "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", false, false, 4, [], 98, ~U[2026-10-09 09:00:00Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "입사 첫날, 업무를 자동화해놓고 바로 퇴사했습니다.\n\n이번 출근지는 전기차 충전소를 운영하고 충전 서비스를 제공하는 SK일렉링크.\n신입사원 ‘오토’가 되어 직원분들과 하루를 함께했습니다.\n\n직원 한 명이 입사하면 회사 계정을 만들고 슬랙에 초대하고,\n명함 제작비와 식권 대금을 지급하려면 자료를 확인해 지출결의서를 쓰고,\n누군가 퇴사하면 계정과 권한을 하나씩 정리해야 합니다.\n\n회사에서는 매일 일어나는 일이지만, 담당자에게는 매번 손이 가는 일들.\n이번 영상에서는 직원분들 옆에 앉아 업무를 배우고, 이 반복 작업들을 AI로 자동화해봤습니다.\n\n• 입사자 온보딩: 회사 계정 생성부터 슬랙 초대까지\n• 지출결의: 거래명세서 확인부터 반복 입력까지\n• 퇴사자 오프보딩: 계정과 권한 정리까지\n\n같은 정보를 여러 곳에 입력하거나, 이름과 금액만 바꿔 똑같은 순서로 처리하는 일이 있으신가요?\n영상을 보시면서 “우리 회사의 이 일도 바꿔볼 수 있겠는데?” 하는 힌트를 찾아보세요.\n\n그리고 일을 마친 신입사원 오토는, 본인의 퇴사 처리까지 자동화하고 바로 퇴근합니다.\n출근부터 퇴사까지 꽉 채운 윤자동의 SK일렉링크 체험기, 함께 보시죠.\n\n※ 본 영상은 SK일렉링크와 함께 제작한 콘텐츠입니다.\n\n📮 윤자동의 다음 출근지를 찾습니다.\n여러분 회사의 이야기를 듣고, 함께 일하며 자동화할 일을 찾아보고 싶습니다.\n신입사원 윤자동과 함께할 기업의 연락을 기다립니다.\n협업 문의: ceo@yunjadong.com\n\n#윤자동 #SK일렉링크 #업무자동화 #AI자동화 #신입사원체험기", "윤자동 신입사원 체험기 | SK일렉링크", 701, false, "dQRsSM_ctFo", "https://www.youtube.com/watch?v=dQRsSM_ctFo", "/downloads/윤자동/2026-10-09 윤자동 신입사원 체험기 | SK일렉링크/윤자동 신입사원 체험기 | SK일렉링크 [dQRsSM_ctFo].mp4", false, 4, ~U[2026-10-09 09:00:00Z]] 03:04:21.342 [debug] QUERY OK source="sources" db=0.1ms idle=3.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" = ?) [4] 03:04:21.343 [debug] QUERY OK source="media_items" db=0.7ms idle=2.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-08 08:41:52Z], 4] 03:04:21.345 [debug] QUERY OK source="media_items" db=1.0ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", "cc5cdc71-6df4-4ec8-a921-d660e0f43da5", false, 388, false, "DgpGMlighhg", "https://www.youtube.com/watch?v=DgpGMlighhg", 10, "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", false, false, 4, [], 98, ~U[2026-10-08 08:41:52Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "AI에게 답을 받은 다음, 복사하고 파일 만들고 보내는 일은 아직 혼자 하고 있나요?\nAI가 실제 업무를 수행하는 단계로 넘어가면 사람에게 남는 역할도 달라집니다.\n이번 영상에서는 일을 맡기고, 기준을 정하고, 결과를 검토하는 방법을 이야기합니다.\n겁먹기보다 오늘 확인할 수 있는 업무 하나부터 시작해 보세요.\n\n00:00 차에서 꺼낸 말의 뜻\n00:27 답변에서 실행으로\n01:30 신입도 AI의 관리자\n02:18 완성도와 생산량\n03:35 일을 맡기는 네 가지 기준\n04:25 이 영상의 실제 수정 과정\n05:14 오늘 맡길 업무 하나\n\n### 복사용 지시문\n아래 자료를 비교해서 내가 결정할 수 있는 문서 파일로 만들어줘.\n공통점과 차이점, 출처를 적어줘.\n확인하지 못한 내용은 따로 표시하고, 외부에는 보내지 마.\n파일을 실제로 열어 볼 수 있는지도 확인해줘.\n마지막으로 내가 판단해야 할 것 세 가지만 알려줘.\n\n자료: [비교할 공개 자료 세 개의 URL 또는 파일]\n목적: [무엇을 결정하려는지]\n확인 기준: [반드시 포함할 항목·형식·최신성 등]\n\n### 출처\n- 윤자동, AI 시대에 절대 하면 안 되는 것: https://www.youtube.com/watch?v=9rpcNlYHpbw\n- Jared Spataro / Microsoft (2025-04-23), The 2025 Annual Work Trend Index: The Frontier Firm is born: https://blogs.microsoft.com/blog/2025/04/23/the-2025-annual-work-trend-index-the-frontier-firm-is-born/\n- Anthropic (2026-03-23), Put Claude to work on your computer: https://claude.com/blog/dispatch-and-computer-use\n공식 페이지 내용 확인: 2026-10-01. 기업의 전망은 전망으로, '100점 한 개 / 90점 100개'는 가상의 비교로 구분했습니다. 실제 도구 사용에는 권한과 환경 설정이 필요하며 오류가 발생할 수 있습니다.\n\n### 제작 고지\n전편 내레이션은 본인의 요청에 따라 라이브 마이크에서 추출·보정한 동일한 11.6초 음성을 참조해 합성했습니다. 차량 원음은 사용하지 않았습니다. 별도 모델 재학습 방식은 아닙니다. 배경과 썸네일에는 생성 이미지를 사용했습니다.\n\n### 음악\nKeep Smiling — Ahjay Stelino / Classical vibes 4 — Grigoriy Nuzhny / Dreaming Big — Ahjay Stelino\nMixkit Stock Music Free License: https://mixkit.co/license/modal/musicFree/\n\n가장 맡기고 싶은 반복 업무 하나를 댓글로 남겨주세요. 성공한 일, 막힌 경험, 아직 직접 하는 일도 좋습니다.\n\n🌐 윤자동 공식 홈페이지\nhttps://www.yunjadong.com/\nAI 자동화 강의, 프로그램, 컨설팅까지 한 곳에!\n\n📧 비즈니스 문의\nceo@yunjadong.com\n\n#AI에이전트 #업무자동화 #윤자동", "사람이 실무를 하는 시대의 끝, 이제 필요한 능력", 388, false, "DgpGMlighhg", "https://www.youtube.com/watch?v=DgpGMlighhg", "/downloads/윤자동/2026-10-08 사람이 실무를 하는 시대의 끝, 이제 필요한 능력/사람이 실무를 하는 시대의 끝, 이제 필요한 능력 [DgpGMlighhg].mp4", false, 4, ~U[2026-10-08 08:41:52Z]] 03:04:21.345 [debug] QUERY OK source="sources" db=0.2ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.347 [debug] QUERY OK source="media_items" db=1.4ms idle=3.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 09:00:36Z], 4] 03:04:21.348 [debug] QUERY OK source="media_items" db=0.8ms idle=4.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", "93b88316-2f90-4bea-827b-9224089986fa", false, 847, false, "KubQ-pNB1IQ", "https://www.youtube.com/watch?v=KubQ-pNB1IQ", 11, "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", false, false, 4, [], 98, ~U[2026-10-07 09:00:36Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "7월 15일, AI한테 처음으로 영상 편집을 맡겼습니다.\n조회수 300, 480, 700이 나와도 계속 만들었고, 두 달 반 만에 채널 영상이 500개가 됐습니다.\n이 영상도 AI가 편집했습니다. 어디서 티가 나는지 직접 판정해 주세요.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n1. AI 편집에 실제로 들어간 시간과 AI한테 맡긴 일(컷 편집, 검증, 연출, 썸네일)\n2. 42시간 촬영 원본을 20분 영상으로 만든 과정과 v5까지 다시 시킨 이유\n3. 누구나 영상을 찍어낼 수 있게 된 뒤 콘텐츠와 관계를 보는 관점\n\n댓글로 알려주세요\nAI가 만든 영상, 보면 티 나요? 티 나는 지점 하나만 알려주세요.\n예) 목소리 억양 / 자막 타이밍 / 화면 전환\n\n타임라인\n00:00 오프닝 · 동영상 500개\n00:08 첫 AI 편집은 어땠어요?\n01:59 시간은 얼마나 들었어요?\n03:01 조회수 안 나올 땐요?\n04:18 제일 크게 맡긴 일은요?\n07:00 지금은 한 편에 몇 분 써요?\n07:52 이렇게 찍어낼 수 있으면 콘텐츠는 의미가 있어요?\n10:00 그래서 뭘 바꿔요?\n\n#AI영상편집 #AI자동화 #클로드코드 #유튜브자동화 #윤자동", "AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지", 847, false, "KubQ-pNB1IQ", "https://www.youtube.com/watch?v=KubQ-pNB1IQ", "/downloads/윤자동/2026-10-07 AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지/AI로 영상 500개 만들었습니다 | 조회수 300부터 1.4억 강의 영상까지 [KubQ-pNB1IQ].mp4", false, 4, ~U[2026-10-07 09:00:36Z]] 03:04:21.348 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [4] 03:04:21.349 [debug] QUERY OK source="media_items" db=0.8ms idle=3.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 09:00:09Z], 4] 03:04:21.350 [debug] QUERY OK source="media_items" db=0.6ms idle=4.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", "5bf37cc5-b0d1-4253-99fb-c23ea42d74b2", false, 986, false, "gFzWJSUdjFY", "https://www.youtube.com/watch?v=gFzWJSUdjFY", 12, "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", false, false, 4, [], 98, ~U[2026-10-06 09:00:09Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "케임브리지대 수학과를 전액장학생으로 졸업한 대성마이맥 수학 강사도 조카의 초등학교 3학년 숙제가 어려웠습니다.\n그래서 코딩 없이 AI로 손글씨 풀이를 읽고 채점하는 도구, 답 대신 힌트를 주는 숙제 도우미를 만들었습니다.\n영어 말하기 피드백은 한 번에 300원. 수학 강사 김성민 님이 직접 만든 학습 도구를 보여드립니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 얻어갈 것\n1. 손글씨 풀이를 AI가 읽고 채점하는 실제 앱 화면\n2. 아이 숙제에 답 대신 힌트를 주는 방식과 AI로 공부할 때 조심할 점\n3. 챗GPT·클로드를 이미 구독 중이라면 바로 해볼 첫 한 문장\n\n댓글로 하나만 알려주세요.\n우리 아이(또는 나)한테 만들어 주고 싶은 학습 도구, 하나만 적어주세요.\n\n0:00 수학 강사도 어려운 초3 숙제\n0:33 게스트 김성민 강사 소개\n1:18 수학 강사가 AI를 쓰기 시작한 계기는요?\n5:24 손글씨 풀이도 AI가 알아봐요?\n7:49 아이 숙제엔 답이에요, 힌트예요?\n8:34 영어 말하기 피드백이 300원이라고요?\n10:45 공부 말고 일상엔 뭘 만들어요?\n13:41 아이가 AI로 공부해도 괜찮아요?\n14:30 뭐부터 해보면 돼요?\n\n#AI학습 #수학공부 #코덱스 #클로드코드 #바이브코딩", "케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다", 986, false, "gFzWJSUdjFY", "https://www.youtube.com/watch?v=gFzWJSUdjFY", "/downloads/윤자동/2026-10-06 케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다/케임브리지대 수학과 출신 강사도 어려운 초3 숙제, 코딩 없이 AI 학습 앱을 만들었습니다 [gFzWJSUdjFY].mp4", false, 4, ~U[2026-10-06 09:00:09Z]] 03:04:21.351 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.352 [debug] QUERY OK source="media_items" db=0.7ms idle=3.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 09:00:11Z], 4] 03:04:21.353 [debug] QUERY OK source="media_items" db=1.1ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약과 답장 초안을 만듭니다.\n6. JEV테스트 라벨에 광고와 문의 메일을 각각 넣어 판정 기록과 Telegram 알림을 대조했습니다. 이번 작업 범위는 읽기·분류·초안 생성입니다.\n\n복사용 요청문 1 · 지난 메일 다시 읽기\n최근 1년 받은 메일을 JEV로 한 통씩 판정해 줘. 시작 전에 예상 비용과 외부 API로 전송되는 내용을 알려 줘. 질문은 대량 발송·자동 알림·구체적 요청·매출 기회·진행 중 거래·필요한 행동·무시 가능 여부·처리 경로로 나눠 줘. 답장 점수가 높은 메일을 보낸편지함과 대조하고, 다시 확인할 의뢰를 날짜·제목·보낸 사람으로 뽑아 줘. 원본은 읽기 전용으로 다루고 결과 목록을 별도 파일에 저장해 줘.\n\n복사용 요청문 2 · 앞으로 오는 메일\n먼저 테스트 라벨을 대상으로 만들어 줘. 주기 실행 작업의 앞단 스크립트가 Gmail을 읽고 JEV 플러그인의 API 클라이언트로 판정하게 해 줘. 확인할 메일이 있을 때 Hermes를 호출해 요약·답장 초안을 내 Telegram으로 보내 줘. 보안 단어·애매한 판정·API 오류는 사람이 확인하도록 알려 줘. 광고와 뉴스레터는 별도 분류하고 저녁에 목록을 보여 줘. 원본은 읽기 전용, 답장은 초안 생성까지로 범위를 정해 줘. 필요한 권한과 비용을 먼저 알려 주고 광고 1통·문의 1통으로 검증해 줘.\n\n실측과 계산 기준\n- 1년치: 2026-09-29, 11,370통, 입력 17,442,153토큰, 10개 병렬, 약 19분. JEV 판정 사용료를 원화로 환산·반올림하면 약 1,000원\n- 약 1,000원은 JEV의 메일 판정 사용료에 해당합니다. 원화 금액은 설명용 환산값입니다.\n- 코덱스 44시간: 기존 한 통 중앙값 14초 × 11,370통으로 계산한 예상 시간\n- 53%: JEV가 무시 항목으로 분류한 비율\n- 실제 답장한 외부 메일 876통과 대조했을 때, 36통이 무시 항목으로 분류됨\n- Hermes 배포: 이 서버에서 약 3분 30초\n- 광고 메일: Hermes 혼자 7.4초·12,770토큰 / JEV 먼저 0.6초·Hermes 0토큰. JEV 입력 약 1,000토큰의 판정 사용료 발생\n- 문의 메일: Hermes 혼자 11.8초·13,014토큰 / JEV 먼저 12.5초·13,017토큰\n- 별도 메일 비서 운영에서 68통을 점검했고 35%를 JEV 단계에서 처리\n- 맥 자동화 프로세스를 중지한 뒤 VPS의 Telegram 알림 수신 확인\n- 시연에는 가상 발신자의 테스트 메일 사용\n\n#JEV #제브 #AI자동화 #메일자동화 #헤르메스 #Hostinger", "JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계", "d3bbc06a-a956-41c4-8287-78c83d56fc29", false, 693, false, "f0zt411z2yQ", "https://www.youtube.com/watch?v=f0zt411z2yQ", 13, "/downloads/윤자동/2026-10-05 JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계/JEV 활용법 총정리, 메일 자동 분류 AI 비서 만들기 3단계 [f0zt411z2yQ].mp4", false, false, 4, [], 98, ~U[2026-10-05 09:00:11Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "이 영상은 Hostinger의 유료광고를 포함합니다. 아래 제휴 링크를 통한 구매 시 채널에 수수료가 지급될 수 있습니다.\n▶ Hostinger VPS: https://hostinger.com/yunjadong\n▶ 할인 코드: YUNJADONG (첫 구매 10%, 적용 조건은 결제 화면에서 확인)\n▶ KVM 2의 기간 선불 총액·갱신 가격과 쿠폰 적용 결과를 결제 화면에서 확인하세요.\n\nJEV로 1년치 메일 11,370통을 다시 분류했습니다. 이어서 새 메일을 먼저 판정하고, 확인할 메일을 Hermes로 넘겨 요약과 답장 초안을 받았습니다. 실제 플러그인 설치부터 서버의 Telegram 알림까지 보여드립니다.\n\n00:00 1년치 메일, 약 1,000원\n00:46 JEV는 어디에 쓰나요\n01:17 1년치 다시 읽기\n03:18 레벨 1 · 브라우저에서 시험\n04:14 레벨 2 · 노트북에서 자동 분류\n05:39 레벨 3 · Hostinger 서버\n05:56 VPS 선택·쿠폰\n06:43 Hermes 배포\n07:02 JEV 설치와 메일 자동화\n07:46 실제 알림·동일 메일 비교\n09:05 실제 답장 기록과 대조\n10:23 호출 방식에 따른 차이\n10:48 준비물\n11:09 요청문과 정리\n\n따라 하기 전 준비\n- TypeSafe 계정과 JEV API 키\n- Gmail 읽기 연결, Telegram 봇과 본인 수신 설정\n- Hostinger VPS와 Hermes에 연결할 모델 계정\n- 비용 항목: 서버 이용료 + JEV 판정 사용료 + 모델 사용료\n- 판정할 메일 내용은 TypeSafe API로 전송됩니다. 조직에서 허용한 자료를 사용하세요.\n\n연결 순서\n1. hPanel Docker Manager에서 Hermes를 배포하고 모델 계정과 메신저를 연결합니다.\n2. 서버 터미널에서 `hermes plugins search jev`로 플러그인을 찾습니다.\n3. 영상에서는 `hermes plugins install jev-typesafe --enable`을 실행하고 TypeSafe API 키를 등록했습니다. 키는 서버의 비공개 설정에 보관합니다.\n4. Gmail을 읽어 JEV로 판정하는 스크립트를 만들고, 주기 실행 작업 앞단에 연결합니다.\n5. 스크립트가 확인할 메일을 골라 Hermes로 넘깁니다. Hermes가 요약과 (truncated) 03:04:21.353 [debug] QUERY OK source="sources" db=0.1ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.355 [debug] QUERY OK source="media_items" db=1.1ms idle=3.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 09:00:38Z], 4] 03:04:21.356 [debug] QUERY OK source="media_items" db=0.6ms idle=4.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", "a2de0cbb-b07f-4d49-adc5-988351f8fc4b", false, 1073, false, "9qwO1IzMc0Q", "https://www.youtube.com/watch?v=9qwO1IzMc0Q", 14, "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", false, false, 4, [], 98, ~U[2026-10-04 09:00:38Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "라이브 채팅에 올라온 주제 3개와 제가 고른 주제 1개로 AI한테 영상 4개를 한 줄씩 시켰습니다.\n연휴 여행 쇼츠는 그대로 올려도 될 만큼 나왔고, 김치찌개는 어색하게 나왔습니다.\n실제로 입력한 지시문, 만드는 동안 AI가 한 일, SNS 4곳 업로드까지 라이브 화면 그대로 담았습니다.\n\n원본 라이브: 2026년 10월 1일\n\n이 영상에서 볼 수 있는 것\n- 실제로 입력한 지시문 원문, 한 문장짜리 지시와 네 줄짜리 지시 비교\n- AI가 먼저 되물은 질문과 혼자 고친 부분(나레이션 길이, 발음)\n- 방송 중 엉뚱하게 움직인 AI를 말 한마디로 멈춘 장면\n\n다음 라이브(10/8 목 20시)에서 AI한테 시킬 영상 주제, 댓글로 받습니다.\n좋아요 많은 3개를 방송에서 그대로 만듭니다.\n\n00:00 AI가 만든 쇼츠 미리보기\n00:18 진짜 시청자가 고른 주제예요?\n01:06 지시는 얼마나 자세히 해야 해요?\n03:42 만드는 동안 AI는 뭘 해요?\n06:00 엉뚱하게 굴면요?\n07:53 결과물은 쓸 만해요? 결과 1 AI 농땡이\n09:19 결과 2 김치찌개 30초\n10:23 결과 3 연휴 여행\n12:09 결과 4 AI 용어 10개\n13:33 올리는 것도 AI가 해요?\n16:18 처음 하는 사람도 돼요?\n\n#AI영상 #AI자동화 #클로드코드 #윤자동 #쇼츠자동화", "라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지", 1073, false, "9qwO1IzMc0Q", "https://www.youtube.com/watch?v=9qwO1IzMc0Q", "/downloads/윤자동/2026-10-04 라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지/라이브 중에 AI한테 영상 4개를 한 줄씩 시켰습니다 | 지시부터 SNS 업로드까지 [9qwO1IzMc0Q].mp4", false, 4, ~U[2026-10-04 09:00:38Z]] 03:04:21.356 [debug] QUERY OK source="sources" db=0.2ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.357 [debug] QUERY OK source="media_items" db=0.7ms idle=3.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 09:00:00Z], 4] 03:04:21.358 [debug] QUERY OK source="media_items" db=0.6ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", "37008e13-4bcd-4a80-86e8-d1c8a996dff1", false, 537, false, "tc314_9zH_s", "https://www.youtube.com/watch?v=tc314_9zH_s", 15, "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", false, false, 4, [], 97, ~U[2026-10-03 09:00:00Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "이 영상은 Manus의 유료 광고를 포함하고 있습니다.\n\nManus 직접 써보기: https://manus.im/redeem?c=YJ32M2G6\nCue 초대 코드: MEETCUE\n\n말로 요청하면 어디까지 만들어 줄까요? 예전부터 여러 번 사용해 온 Manus의 2.0 기능을 직접 살펴봤습니다.\n영상 편집, 16:9 게임, Cue 에이전트 팀, 내 API 모델을 연결하는 Flex까지 실제 결과를 열고 조작하면서 확인했습니다.\n\n00:00 예전부터 Manus를 써 온 이유\n00:59 Alchemy로 영상 만들고 음악 수정하기\n03:08 16:9 게임을 만들고 직접 고치기\n04:56 Cue 에이전트 팀으로 마케팅 결과 만들기\n07:10 Flex에 내 모델 연결하고 실행하기\n08:19 처음 요청할 때 적어 볼 것\n\nGoogle AI Studio와 OpenRouter에는 일부 무료 API 제공량 또는 무료 모델이 있습니다. 지원 모델과 한도는 계정·시점에 따라 달라지며, Manus 실행 크레딧은 별도입니다.\nGoogle AI Studio: https://aistudio.google.com/\nOpenRouter: https://openrouter.ai/\n\nCue의 상품·고객·광고 시안과 Flex 회의 메모는 공개 시연용 가상 예시입니다.\n\n여러분은 Manus로 무엇을 만들어 보고 싶으세요? 댓글로 남겨 주세요.\n\n#Manus #마누스 #AI에이전트", "말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다", 537, false, "tc314_9zH_s", "https://www.youtube.com/watch?v=tc314_9zH_s", "/downloads/윤자동/2026-10-03 말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다/말했더니 영상·게임·마케팅팀까지? Manus 2.0 직접 써봤습니다 [tc314_9zH_s].mp4", false, 4, ~U[2026-10-03 09:00:00Z]] 03:04:21.359 [debug] QUERY OK source="sources" db=0.1ms idle=3.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" = ?) [4] 03:04:21.360 [debug] QUERY OK source="media_items" db=1.6ms idle=2.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 03:47:41Z], 4] 03:04:21.362 [debug] QUERY OK source="media_items" db=1.1ms idle=4.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", "850e59f3-2dc0-4f2f-a225-6ebfe67383c6", false, 538, false, "zFQNgZn9hKo", "https://www.youtube.com/watch?v=zFQNgZn9hKo", 16, "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", false, false, 4, [], 97, ~U[2026-10-03 03:47:41Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "로그인된 앱을 다른 컴퓨터로 옮기고 AI가 이어서 일한다면 편리할까요, 부담스러울까요? Cua Spaces의 공식 발표와 문서를 조사하고 macOS 앱을 직접 설치했습니다. 회사·기능·사양·비용·라이선스·릴레이 보안 설명을 구분해 정리합니다.\n\n이번 직접 확인 범위는 Cua Spaces 0.3.1 설치, 초기 설정, Lume 런타임 준비 과정입니다. VM 연결은 macOS 로컬 네트워크 권한 안내에서 멈췄습니다. 실제 업무 계정 Teleport 및 장시간 무인 업무 성공률은 검증하지 않았습니다. 공식 데모 화면은 별도 표시했습니다.\n\n조사 기준: 2026년 10월 3일 KST. 출시 초기 제품이라 기능·조건이 바뀔 수 있습니다. 국내에서 충분한 장기 사용 후기를 확보하지 못했으며, 해외 댓글도 전체 여론을 대표하지 않습니다. 영상과 썸네일에 AI 제작 요소가 포함되며, 내레이션은 승인된 본인 음성 레퍼런스를 사용한 보이스클론입니다.\n\n00:00 로그인된 앱을 옮긴다면\n00:27 Cua Spaces와 만든 회사\n01:45 Teleport·Multiplayer·내 장비\n02:51 설치 조건과 실제 설치\n04:18 무료·비용·라이선스\n05:10 로그인 권한과 릴레이\n06:21 해외 반응과 국내 조사\n07:09 누가 쓸까·시작하는 방법\n08:19 최종 판단과 댓글 질문\n\n주요 출처\n- 원 게시물: https://x.com/trycua/status/2106057192285548763\n- 제품·요금·요구사항: https://spaces.cua.ai/\n- 회사 소개: https://www.ycombinator.com/companies/cua\n- 앱 지원표: https://cua.ai/docs/spaces/guides/teleport-an-app\n- Keyvault: https://cua.ai/docs/spaces/guides/keyvault\n- 릴레이 설명: https://cua.ai/docs/spaces/guides/relay-security\n- 로컬 VM 사양: https://cua.ai/docs/start-here/create-a-local-macos-sandbox\n- 소스·라이선스: https://github.com/trycua/cua\n- 반응 원문: https://x.com/aymanemsi/status/2106058979679916130\n- 반응 원문: https://x.com/muness/status/2106082786226668017\n- 반응 원문: https://x.com/kranthi95223317/status/2106083101634187337\n- 기존 Cua 공식 YouTube(이번 앱 사용기와 구별): https://www.youtube.com/watch?v=VD_2l3gDdTk\n음악: Mixkit Stock Music Free License / https://mixkit.co/license/#musicFree\n\n윤자동 AI 멤버십\n라이브 강의·VOD·실습 자료와 디스코드 화면 공유 피드백 안내\nhttps://www.yunjadong.com/membership\n\n#CuaSpaces #컴퓨터사용AI #AI자동화 #윤자동", "로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces", 538, false, "zFQNgZn9hKo", "https://www.youtube.com/watch?v=zFQNgZn9hKo", "/downloads/윤자동/2026-10-03 로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces/로그인까지 복사하는 AI 컴퓨터… 무료라는데 괜찮을까? | Cua Spaces [zFQNgZn9hKo].mp4", false, 4, ~U[2026-10-03 03:47:41Z]] 03:04:21.363 [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" = ?) [4] 03:04:21.364 [debug] QUERY OK source="media_items" db=0.8ms idle=4.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-02 09:00:47Z], 4] 03:04:21.365 [debug] QUERY OK source="media_items" db=0.6ms idle=5.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", "35a07028-f93f-4b3a-95cc-66d5cd1c5518", false, 507, false, "BFg_JcoGuX0", "https://www.youtube.com/watch?v=BFg_JcoGuX0", 17, "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", false, false, 4, [], 98, ~U[2026-10-02 09:00:47Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "윈도우만 30년 쓰다가 올해 맥북으로 넘어와 AI에게 일을 시키고 있습니다. AI 한마디에 카톡·밝기·볼륨이 움직이는 실제 화면과, 램 128GB를 고른 이유, 애플 홈페이지에서 확인할 곳을 정리했습니다.\n\n영상 속 맥: 맥북 프로 16인치 M5 Max, 통합 메모리 128GB\n\n맥 터미널에서 따라 해 보기\nosascript -e \"set volume output volume 30\"\n\n00:00 AI가 카톡을 보냈다\n00:46 채팅만 하면 윈도우도 충분\n01:17 이유 1. 새 AI 도구가 맥에 먼저\n02:23 이유 2. AI가 맥을 직접 만진다\n03:54 이유 3. 켜두고 여러 AI를 돌린다\n04:59 램 128GB를 산 이유와 고르는 법\n06:35 애플 사이트에서 볼 곳\n07:29 맥을 사면 안 되는 사람\n\n가격·출시일은 2026년 9월 25일 기준입니다. 영상 속 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리 · Mixkit\n\n지금 쓰시는 컴퓨터 램 용량과 주로 하는 일을 댓글로 적어 주세요. 용도에 맞는 용량을 답글로 말씀드리겠습니다.\n\n#맥북 #맥북프로 #AI #윈도우 #맥북추천", "AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이", 507, false, "BFg_JcoGuX0", "https://www.youtube.com/watch?v=BFg_JcoGuX0", "/downloads/윤자동/2026-10-02 AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이/AI 잘 쓰려면 맥북을 사야 하는 3가지 이유 | 윈도우 vs 맥 차이 [BFg_JcoGuX0].mp4", false, 4, ~U[2026-10-02 09:00:47Z]] 03:04:21.365 [debug] QUERY OK source="sources" db=0.2ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.366 [debug] QUERY OK source="media_items" db=1.1ms idle=3.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-01 09:00:27Z], 4] 03:04:21.370 [debug] QUERY OK source="media_items" db=3.2ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", "ce9e290b-6eb9-4b1b-9bb3-dc7147c49bf8", false, 365, false, "xEV7i8WKdpc", "https://www.youtube.com/watch?v=xEV7i8WKdpc", 18, "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", false, false, 4, [], 97, ~U[2026-10-01 09:00:27Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "AI 직원 7명을 실제로 운영하면서 받는 질문 다섯 가지에 답했습니다. 진짜 혼자 일하는지, 한 달 비용, 사고를 막는 법, 말 세 마디로 메일 답장·계약서·카톡을 처리하는 실제 화면, 처음 뽑기 좋은 AI 직원까지.\n\n영상 속 AI 직원 7명\n카톡방 담당 클과장 · 슬랙 총무 비서 윤비서 · 메일 비서 · 회의록 담당 · 통화 비서 · 영상 편집자 · 후기 선물 담당(AI 없이 규칙으로)\n\n00:00 질문 542개에 답한 직원\n00:32 Q1 진짜 사람 없이 일하나요?\n01:35 Q2 한 달에 얼마 들어요?\n02:21 Q3 사고 나면요?\n02:52 Q4 어떤 일을 맡길 수 있나요? (말 세 마디 시연)\n04:31 업무 매뉴얼 한 장\n04:48 주차·통화·영상 편집\n05:31 Q5 저는 뭐부터 하면 되나요?\n\n비용은 2026년 9월 기준입니다. 환율은 9월 21일 약 1,366원, 최저임금은 2026년 월 환산액(209시간) 기준입니다.\n한지은 PD는 시연용 가상 인물이고, 통화는 AI 음성으로 만든 가상 통화입니다. 화면 속 개인정보는 가림 처리했습니다. 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 HeyGen 오디오 라이브러리\n\n여러분 회사에 AI 직원 한 명을 뽑는다면 어떤 일을 맡기고 싶으세요? 댓글로 적어 주시면 어떻게 만들면 되는지 답글로 알려드리겠습니다.\n\n#AI직원 #업무자동화 #클로드코드", "AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법", 365, false, "xEV7i8WKdpc", "https://www.youtube.com/watch?v=xEV7i8WKdpc", "/downloads/윤자동/2026-10-01 AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법/AI 직원 7명 운영해 보고 답합니다 | 월급·사고·만드는 법 [xEV7i8WKdpc].mp4", false, 4, ~U[2026-10-01 09:00:27Z]] 03:04:21.371 [debug] QUERY OK source="sources" db=0.3ms idle=6.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.372 [debug] QUERY OK source="media_items" db=0.8ms idle=6.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-01 04:29:12Z], 4] 03:04:21.373 [debug] QUERY OK source="media_items" db=0.7ms idle=6.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", "f469a565-f7ca-40b4-8dfb-d32af77861f1", false, 570, false, "9wao057EuSA", "https://www.youtube.com/watch?v=9wao057EuSA", 19, "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", false, false, 4, [], 97, ~U[2026-10-01 04:29:12Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "AI 이야기가 나오면 조용히 고개만 끄덕였나요?\n카페 주문, 책상, 도서관 같은 익숙한 장면으로 15개 용어를 연결해 봅니다.\n처음에는 낯설었던 AI 회의 대화를 마지막에 다시 들어 보세요.\n\n00:00 고개만 끄덕이던 회의\n00:28 앱과 모델은 뭐가 다를까\n01:56 어떻게 부탁해야 할까\n03:37 사진으로 물어봐도 될까\n04:22 자신 있게 틀리는 이유\n05:50 답변에서 실행으로\n07:55 말로 앱을 만들면 끝일까\n08:33 이제 대화에 끼어들기\n\n오늘 이해된 용어 하나를 본인의 말로 댓글에 적어 주세요.\n다른 초보자에게도 그 한 줄이 도움이 될 수 있습니다.\n\n[제작 안내]\n그림과 사례는 개념 설명용입니다. 이미지 생성 AI를 활용했고, 나레이션은 윤자동 전용 AI 복제 음성입니다. 특정 서비스의 실제 시연 영상은 아닙니다.\n\n[참고자료]\nhttps://developers.google.com/machine-learning/glossary/generative\nhttps://www.anthropic.com/engineering/building-effective-agents\nhttps://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro\nhttps://developer.mozilla.org/en-US/docs/Glossary/API\nhttps://www.ibm.com/think/topics/retrieval-augmented-generation\n\n#AI용어 #AI초보 #인공지능 #프롬프트 #생성형AI", "AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문", 570, false, "9wao057EuSA", "https://www.youtube.com/watch?v=9wao057EuSA", "/downloads/윤자동/2026-10-01 AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문/AI 용어 15개, 그림으로 이해하면 대화가 달라집니다 | 초보자 입문 [9wao057EuSA].mp4", false, 4, ~U[2026-10-01 04:29:12Z]] 03:04:21.373 [debug] QUERY OK source="sources" db=0.2ms idle=6.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.374 [debug] QUERY OK source="media_items" db=0.8ms idle=3.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-30 23:54:56Z], 4] 03:04:21.375 [debug] QUERY OK source="media_items" db=0.8ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", "d4ce1863-1524-471d-9031-5d65e9a8d5f9", false, 351, false, "LXLXiFJmW5A", "https://www.youtube.com/watch?v=LXLXiFJmW5A", 20, "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", false, false, 4, [], 96, ~U[2026-09-30 23:54:56Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "제미나이 4 아르곤, 그래서 뭐가 좋아졌을까요?\n출력 100만 토큰, 업무 자동화, 긴 영상 이해를 중심으로 스펙과 경쟁 모델의 공개 평가를 쉽게 비교했습니다.\n\n• 출력 한도: 64K → 1M 토큰, 약 15.6배\n• 업무 자동화: Argon 51.3 / GPT-6 Astra 41.4 / Claude Opus 5.5 42.5\n• 긴 영상 이해: Argon 91.7 / GPT-6 Astra 87.5 / Claude Opus 5.5 83.7\n• 코딩: 평가하는 작업에 따라 선두가 달라집니다.\n• API 출시 초기: 100만 토큰당 입력 $2 / 출력 $10\n• 초기 요금 이후: 입력 $4 / 출력 $20, 캐시된 입력 95% 할인\n• 제공 순서: 보안 파트너 → 유료 API·Google AI Ultra를 시작으로 확대\n\n00:00 아르곤 핵심 요약\n00:18 아르곤은 어떤 모델인가\n00:48 출력 100만 토큰\n01:20 업무 자동화 비교\n01:38 지식 업무 비교\n01:56 긴 영상·차트 이해\n02:36 코딩과 컴퓨터 조작\n03:13 구글 내부 활용 사례\n03:52 보안과 SNS 반응\n04:27 가격\n04:58 공개 순서\n05:12 장점과 결론\n\n공식 자료 · 2026년 9월 30일 발표\nGoogle 발표\nhttps://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/\nGoogle DeepMind 모델 및 성능표\nhttps://deepmind.google/models/gemini/\n평가 방법론\nhttps://deepmind.google/models/evals-methodology/gemini-4-argon\n\n커뮤니티와 보안팀 반응\nReddit r/GeminiAI\nhttps://www.reddit.com/r/GeminiAI/comments/1wufc6s/gemini_4_argon_release/\nX · Wiz 보안팀 @galnagli\nhttps://x.com/galnagli/status/2105395814713512289\nThreads\nhttps://www.threads.com/@saasjunctionhq/post/Dd7MbgzDUgU/google-just-announced-gemini-argon-it-can-generate-up-to-million-output-tokens\n\n평가 수치는 Google 공개 성능표 기준입니다. 영상의 2.7배는 기존 Rust 영상 디코더 대비 개선 결과이며, 300 TiB는 데이터센터 최적화 적용 시의 메모리 절감 수치입니다.\n화면 수집: Aside / 설명 삽화: imagegen / 내레이션: 윤자동 AI 복제 음성\n음악·효과음: Mixkit 라이선스 사용\n\n#제미나이4 #아르곤 #Gemini #AI #윤자동", "제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교", 351, false, "LXLXiFJmW5A", "https://www.youtube.com/watch?v=LXLXiFJmW5A", "/downloads/윤자동/2026-09-30 제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교/제미나이4 아르곤 등장! 챗GPT·클로드 긴장할 이유|100만 토큰과 성능 비교 [LXLXiFJmW5A].mp4", false, 4, ~U[2026-09-30 23:54:56Z]] 03:04:21.376 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:04:21.377 [debug] QUERY OK source="media_items" db=0.9ms idle=3.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-30 09:00:18Z], 4] 03:04:21.378 [debug] QUERY OK source="media_items" db=0.9ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["메타가 준다는 AI 토큰 10억 개, 한국에서 진짜 공짜로 받을 수 있는지 제 맥북에서 직접 가입해 보며 영수증처럼 정산했습니다. 공식 발표로 확인된 것, 한국에서 멈춘 지점, 공짜라던 방법에 붙은 비용과 위험까지 담았습니다.\n\n가입 전 체크리스트\n· Muse 이용 대상: 미국(9/8 출시), 캐나다(9/18), 만 18세 이상\n· 초대 코드: 가입 후 48시간 안에 설정에서 입력, 양쪽 10억 토큰, 1인 최대 20명 (Muse 공식 계정 9/16 발표)\n· 무료 요금제: 매주 1억 토큰, 10억은 약 10주 치\n· 제미나이 스파크 조건: 만 18세 이상, 개인 구글 계정, 활동 기록 켜기, Google AI Pro(월 29,000원) 이상 구독. 회사(Workspace) 계정은 불가\n· 지역 제한을 돌아가는 방법은 메타 계정 제한 위험이 있습니다\n\n00:00 공짜 10억 토큰의 영수증\n00:38 Muse가 뭔데 10억을 주나요\n01:36 10억이면 얼마나 쓰나요\n02:08 한국에서 그냥 가입하면 되나요\n02:51 제미나이 스파크면 공짜인가요\n04:15 위험은 없나요\n04:54 그래서 저는 해야 하나요\n05:30 정리\n\n확인한 페이지: 메타 고객센터 \"Muse 구독 정보\", 구글 도움말 \"Gemini Spark\", Google One 요금(한국), muse.ai. 정보는 2026년 9월 26일 기준이며 바뀔 수 있습니다.\n영상 속 화면 녹화는 AI 에이전트가 제 맥북에서 진행했고, 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 Mixkit\n\n#메타 #Muse #뮤즈 #AI에이전트 #제미나이스파크 #초대코드 #AI무료", "메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)", "74835660-6490-442d-b15d-aafa409218b5", false, 359, false, "2X-lb7E9cBA", "https://www.youtube.com/watch?v=2X-lb7E9cBA", 21, "/downloads/윤자동/2026-09-30 메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)/메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크) [2X-lb7E9cBA].mp4", false, false, 4, [], 96, ~U[2026-09-30 09:00:18Z], ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], "메타가 준다는 AI 토큰 10억 개, 한국에서 진짜 공짜로 받을 수 있는지 제 맥북에서 직접 가입해 보며 영수증처럼 정산했습니다. 공식 발표로 확인된 것, 한국에서 멈춘 지점, 공짜라던 방법에 붙은 비용과 위험까지 담았습니다.\n\n가입 전 체크리스트\n· Muse 이용 대상: 미국(9/8 출시), 캐나다(9/18), 만 18세 이상\n· 초대 코드: 가입 후 48시간 안에 설정에서 입력, 양쪽 10억 토큰, 1인 최대 20명 (Muse 공식 계정 9/16 발표)\n· 무료 요금제: 매주 1억 토큰, 10억은 약 10주 치\n· 제미나이 스파크 조건: 만 18세 이상, 개인 구글 계정, 활동 기록 켜기, Google AI Pro(월 29,000원) 이상 구독. 회사(Workspace) 계정은 불가\n· 지역 제한을 돌아가는 방법은 메타 계정 제한 위험이 있습니다\n\n00:00 공짜 10억 토큰의 영수증\n00:38 Muse가 뭔데 10억을 주나요\n01:36 10억이면 얼마나 쓰나요\n02:08 한국에서 그냥 가입하면 되나요\n02:51 제미나이 스파크면 공짜인가요\n04:15 위험은 없나요\n04:54 그래서 저는 해야 하나요\n05:30 정리\n\n확인한 페이지: 메타 고객센터 \"Muse 구독 정보\", 구글 도움말 \"Gemini Spark\", Google One 요금(한국), muse.ai. 정보는 2026년 9월 26일 기준이며 바뀔 수 있습니다.\n영상 속 화면 녹화는 AI 에이전트가 제 맥북에서 진행했고, 나레이션은 제 목소리를 로컬에서 복제한 AI 음성입니다.\n배경음악 Mixkit\n\n#메타 #Muse #뮤즈 #AI에이전트 #제미나이스파크 #초대코드 #AI무료", "메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)", 359, false, "2X-lb7E9cBA", "https://www.youtube.com/watch?v=2X-lb7E9cBA", "/downloads/윤자동/2026-09-30 메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크)/메타 AI 10억 토큰 공짜라길래 영수증 뽑아봤습니다 (Muse 초대 코드 팩트체크) [2X-lb7E9cBA].mp4", false, 4, ~U[2026-09-30 09:00:18Z]] 03:04:21.379 [debug] QUERY OK source="sources" db=0.3ms idle=4.4ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z], 4] 03:04:21.380 [debug] QUERY OK source="media_items" db=0.9ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 03:04:21.382 [debug] QUERY OK source="media_items" db=0.8ms idle=4.0ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 03:04:21.382 [debug] QUERY OK source="media_items" db=0.2ms idle=3.7ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 03:04:21.382 [info] No notification servers provided for source 4 03:04:21.383 [debug] QUERY OK source="tasks" db=0.1ms idle=1.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16362, 4, ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z]] 03:04:21.383 [info] {"args":{"id":4},"id":16329,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":37207720,"event":"job:stop","queue_time":326963,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:04:21.817 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uXKWCO-9DVo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50678/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/94/dc/94dc30158205b305b28946f25bdf5a4668bbbbafa4171ceb950dbfc4cacd3750.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:04:21.818 [debug] QUERY OK db=0.0ms idle=435.0ms begin [] 03:04:21.819 [debug] QUERY OK source="media_items" db=1.1ms UPDATE "media_items" SET "media_filepath" = ?, "media_downloaded_at" = ?, "metadata_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/윤자동/2026-10-17 챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지/챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지 [uXKWCO-9DVo].mp4", ~U[2026-10-18 03:04:18Z], "/downloads/윤자동/2026-10-17 챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지/챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지 [uXKWCO-9DVo].info.json", [["ko", "/downloads/윤자동/2026-10-17 챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지/챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지 [uXKWCO-9DVo].ko.srt"]], "/downloads/윤자동/2026-10-17 챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지/챗GPT 왕초보 탈출하기 | 가입부터 요금제, 화면 하나하나, 질문 잘하는 법까지 [uXKWCO-9DVo]-thumb.jpg", ~U[2026-10-18 03:04:21Z], 50678] 03:04:21.820 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/50678/metadata.json.gz", "/config/metadata/media_items/50678/thumbnail.jpg", 50678, ~U[2026-10-18 03:04:21Z], ~U[2026-10-18 03:04:21Z]] 03:04:21.821 [debug] QUERY OK db=0.4ms commit [] 03:04:21.822 [debug] QUERY OK source="media_items" db=1.0ms idle=438.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [82059442, ~U[2026-10-18 03:04:21Z], 50678] 03:04:21.823 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:04:21.823 [info] {"args":{"id":50678},"id":16361,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":33375485,"event":"job:stop","queue_time":446839,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:04:39.167 [info] {"source":"oban","duration":1320,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:04:46.219 [info] GET /media/93e30af0-d290-40c5-aa2c-833ab15a77d8/stream 03:04:46.220 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "93e30af0-d290-40c5-aa2c-833ab15a77d8", "v" => "1792033484"} Pipelines: [:maybe_basic_auth] 03:04:46.220 [debug] QUERY OK source="media_items" db=0.2ms idle=1540.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["93e30af0-d290-40c5-aa2c-833ab15a77d8"] 03:04:46.220 [debug] Invalid range request for media item: 93e30af0-d290-40c5-aa2c-833ab15a77d8 - serving full file 03:04:46.220 [info] Sent 200 in 967µs 03:05:00.325 [info] {"source":"oban","duration":301,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:05:09.169 [info] {"source":"oban","duration":1194,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:05:11.486 [info] GET /media/f4b1930a-e29d-4378-87da-fc7a461431d1/stream 03:05:11.486 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "f4b1930a-e29d-4378-87da-fc7a461431d1", "v" => "1789092012"} Pipelines: [:maybe_basic_auth] 03:05:11.487 [debug] QUERY OK source="media_items" db=0.4ms idle=1852.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["f4b1930a-e29d-4378-87da-fc7a461431d1"] 03:05:11.487 [debug] Invalid range request for media item: f4b1930a-e29d-4378-87da-fc7a461431d1 - serving full file 03:05:11.487 [info] Sent 200 in 1ms 03:05:13.154 [info] GET /media/06a3026c-4adf-4e9e-980d-6fd0291d4554/stream 03:05:13.155 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "06a3026c-4adf-4e9e-980d-6fd0291d4554", "v" => "1791341289"} Pipelines: [:maybe_basic_auth] 03:05:13.155 [debug] QUERY OK source="media_items" db=0.3ms idle=1318.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["06a3026c-4adf-4e9e-980d-6fd0291d4554"] 03:05:13.155 [debug] Invalid range request for media item: 06a3026c-4adf-4e9e-980d-6fd0291d4554 - serving full file 03:05:13.155 [info] Sent 200 in 906µs 03:05:28.540 [info] GET /media/df3efe76-b1e8-40d9-9ef5-07d8f0ccdb74/stream 03:05:28.540 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "df3efe76-b1e8-40d9-9ef5-07d8f0ccdb74", "v" => "1792119750"} Pipelines: [:maybe_basic_auth] 03:05:28.541 [debug] QUERY OK source="media_items" db=0.3ms idle=1974.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["df3efe76-b1e8-40d9-9ef5-07d8f0ccdb74"] 03:05:28.541 [debug] Invalid range request for media item: df3efe76-b1e8-40d9-9ef5-07d8f0ccdb74 - serving full file 03:05:28.541 [info] Sent 200 in 819µs 03:05:32.928 [info] GET /media/7a1cd626-79d3-49ca-b371-53e7f0fddcc2/stream 03:05:32.928 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "7a1cd626-79d3-49ca-b371-53e7f0fddcc2", "v" => "1788749045"} Pipelines: [:maybe_basic_auth] 03:05:32.929 [debug] QUERY OK source="media_items" db=0.2ms idle=1361.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["7a1cd626-79d3-49ca-b371-53e7f0fddcc2"] 03:05:32.929 [debug] Invalid range request for media item: 7a1cd626-79d3-49ca-b371-53e7f0fddcc2 - serving full file 03:05:32.929 [info] Sent 200 in 1ms 03:05:39.170 [info] {"source":"oban","duration":893,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:05:42.820 [info] GET /media/6bed21fc-ebfb-43c7-8fec-259d5ea6317e/stream 03:05:42.821 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "6bed21fc-ebfb-43c7-8fec-259d5ea6317e", "v" => "1792033508"} Pipelines: [:maybe_basic_auth] 03:05:42.821 [debug] QUERY OK source="media_items" db=0.2ms idle=1253.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["6bed21fc-ebfb-43c7-8fec-259d5ea6317e"] 03:05:42.821 [debug] Invalid range request for media item: 6bed21fc-ebfb-43c7-8fec-259d5ea6317e - serving full file 03:05:42.821 [info] Sent 200 in 864µs 03:06:00.326 [info] {"source":"oban","duration":266,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:06:05.320 [info] GET /media/70faeff6-8fc0-48ef-990e-c11192134cfb/stream 03:06:05.320 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "70faeff6-8fc0-48ef-990e-c11192134cfb", "v" => "1790910248"} Pipelines: [:maybe_basic_auth] 03:06:05.321 [debug] QUERY OK source="media_items" db=0.5ms idle=1752.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["70faeff6-8fc0-48ef-990e-c11192134cfb"] 03:06:05.321 [debug] Invalid range request for media item: 70faeff6-8fc0-48ef-990e-c11192134cfb - serving full file 03:06:05.321 [info] Sent 200 in 1ms 03:06:05.693 [info] GET / 03:06:05.693 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:06:05.694 [debug] QUERY OK source="settings" db=0.3ms idle=1125.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:05.695 [debug] QUERY OK source="media_profiles" db=1.2ms idle=1087.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:06:05.695 [debug] QUERY OK source="sources" db=0.0ms idle=374.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:06:05.727 [debug] QUERY OK source="media_items" db=30.9ms idle=128.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:06:05.730 [debug] QUERY OK source="media_items" db=3.0ms idle=119.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:06:05.730 [debug] QUERY OK source="settings" db=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 [] 03:06:05.731 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:06:05.731 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:06:05.732 [debug] QUERY OK source="tasks" db=0.2ms idle=5.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"] 03:06:05.733 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 03:06:05.734 [debug] QUERY OK source="media_items" db=0.2ms idle=2.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:06:05.734 [debug] QUERY OK source="sources" db=0.1ms idle=3.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 (?,?)) [4, 7] 03:06:05.742 [debug] QUERY OK source="media_items" db=7.4ms idle=3.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"))) [] 03:06:05.744 [debug] QUERY OK source="media_items" db=1.0ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:06:05.744 [debug] QUERY OK source="sources" db=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 (?,?)) [7, 3] 03:06:05.745 [info] Sent 200 in 51ms 03:06:05.959 [info] GET / 03:06:05.959 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:06:05.960 [debug] QUERY OK source="settings" db=0.1ms idle=225.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:05.960 [debug] QUERY OK source="media_profiles" db=0.0ms idle=225.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:06:05.960 [debug] QUERY OK source="sources" db=0.0ms idle=218.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:06:05.962 [debug] QUERY OK source="media_items" db=1.8ms idle=216.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:06:05.963 [debug] QUERY OK source="media_items" db=0.9ms idle=218.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:06:05.963 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:06:05.964 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:06:05.964 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:06:05.964 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 03:06:05.965 [debug] QUERY OK source="media_items" db=0.6ms idle=1.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)) [] 03:06:05.966 [debug] QUERY OK source="media_items" db=0.2ms idle=1.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:06:05.966 [debug] QUERY OK source="sources" db=0.2ms 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" IN (?,?)) [4, 7] 03:06:05.968 [debug] QUERY OK source="media_items" db=1.8ms idle=2.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"))) [] 03:06:05.970 [debug] QUERY OK source="media_items" db=0.9ms idle=4.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:06:05.970 [debug] QUERY OK source="sources" db=0.2ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:06:05.971 [info] Sent 200 in 11ms 03:06:09.172 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:06:17.655 [info] GET /media/cd55b22f-1ab5-4197-be99-04c2ed56cc99/stream 03:06:17.656 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "cd55b22f-1ab5-4197-be99-04c2ed56cc99", "v" => "1791511223"} Pipelines: [:maybe_basic_auth] 03:06:17.656 [debug] QUERY OK source="media_items" db=0.2ms idle=1036.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["cd55b22f-1ab5-4197-be99-04c2ed56cc99"] 03:06:17.656 [debug] Invalid range request for media item: cd55b22f-1ab5-4197-be99-04c2ed56cc99 - serving full file 03:06:17.656 [info] Sent 200 in 844µs 03:06:20.205 [info] {"args":{"id":7},"id":16332,"meta":{},"system_time":1792292780205671734,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:06:20.206 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:20.206 [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 [] 03:06:20.213 [debug] QUERY OK source="media_items" db=6.4ms idle=10.0ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 03:06:20.216 [debug] QUERY OK source="media_items" db=2.7ms idle=15.6ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 03:06:20.216 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 03:06:20.217 [debug] QUERY OK source="settings" db=0.1ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:20.217 [debug] QUERY OK source="settings" db=0.1ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:20.222 [debug] QUERY OK source="media_items" db=4.1ms idle=4.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [7] 03:06:20.255 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 03:06:20.256 [debug] Current batch of media processed. Will check again in 1000ms 03:06:20.256 [debug] QUERY OK source="settings" db=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 [] 03:06:20.256 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:06:20.256 [debug] QUERY OK source="settings" db=0.0ms idle=39.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:20.256 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@hs_academy --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/06/1a/061aab621eb29895eff9fa2f21f548271dba6726f2be184053c7c31107a5d9eb.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/39/a1/39a19ab79d3c06d2a639fd64bfa169143c84fad8d1c1e73d88279711d0dc8a4e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:06:21.256 [debug] Current batch of media processed. Will check again in 1000ms 03:06:22.257 [debug] Current batch of media processed. Will check again in 1000ms 03:06:23.258 [debug] Current batch of media processed. Will check again in 1000ms 03:06:24.260 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#ai #엔비디아 #주식투자 #미국주식 #ai버블 #코어위브 #gpu #ram", "duration" => 1469, "filename" => "/downloads/이효석아카데미/2026-10-18 "코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산/"코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산 [wRF41ozmszY].mp4", "id" => "wRF41ozmszY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=wRF41ozmszY", "playlist_index" => 1, "timestamp" => 1792281631, "title" => "\"코어위브 망한다는 소리에 캐시 우드는 더 샀다\"...빚더미 GPU 사업을 보는 정반대의 계산", "upload_date" => "20261018"} 03:06:24.260 [debug] QUERY OK source="sources" db=0.2ms idle=64.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:24.261 [debug] QUERY OK source="sources" db=0.2ms idle=64.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] 03:06:24.268 [debug] QUERY OK source="media_items" db=6.8ms idle=65.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-18 00:00:31Z], 7] 03:06:24.311 [debug] QUERY OK source="media_items" db=42.6ms idle=72.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#ai #엔비디아 #주식투자 #미국주식 #ai버블 #코어위브 #gpu #ram", "\"코어위브 망한다는 소리에 캐시 우드는 더 샀다\"...빚더미 GPU 사업을 보는 정반대의 계산", "75439252-1e20-456a-a8a2-5124d7b82995", false, 1469, false, "wRF41ozmszY", "https://www.youtube.com/watch?v=wRF41ozmszY", 1, "/downloads/이효석아카데미/2026-10-18 "코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산/"코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산 [wRF41ozmszY].mp4", false, false, 7, [], 99, ~U[2026-10-18 00:00:31Z], ~U[2026-10-18 03:06:24Z], ~U[2026-10-18 03:06:24Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#ai #엔비디아 #주식투자 #미국주식 #ai버블 #코어위브 #gpu #ram", "\"코어위브 망한다는 소리에 캐시 우드는 더 샀다\"...빚더미 GPU 사업을 보는 정반대의 계산", 1469, false, "wRF41ozmszY", "https://www.youtube.com/watch?v=wRF41ozmszY", "/downloads/이효석아카데미/2026-10-18 "코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산/"코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산 [wRF41ozmszY].mp4", false, 7, ~U[2026-10-18 00:00:31Z]] 03:06:24.312 [debug] QUERY OK source="sources" db=1.0ms idle=109.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] 03:06:24.313 [debug] QUERY OK source="media_profiles" db=0.4ms idle=52.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] 03:06:24.313 [debug] QUERY OK source="media_items" db=0.2ms idle=52.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 [50719] 03:06:24.313 [info] Kicking off download for media item #50719 (wRF41ozmszY) 03:06:24.322 [info] {"args":{"id":50719},"id":16363,"meta":{},"system_time":1792292784322765920,"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"]} 03:06:24.323 [debug] QUERY OK source="media_items" db=0.1ms 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 WHERE (m0."id" = ?) [50719] 03:06:24.323 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:06:24.767 [debug] QUERY OK source="tasks" db=451.6ms idle=3.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16363, 50719, ~U[2026-10-18 03:06:24Z], ~U[2026-10-18 03:06:24Z]] 03:06:24.768 [debug] Current batch of media processed. Will check again in 1000ms 03:06:24.768 [debug] QUERY OK source="sources" db=0.5ms queue=444.2ms idle=7.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:24.768 [debug] QUERY OK source="media_profiles" db=0.1ms idle=452.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] 03:06:24.768 [debug] QUERY OK source="media_items" db=0.1ms idle=446.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 [50719] 03:06:24.769 [debug] QUERY OK source="media_metadata" db=0.0ms idle=446.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" = ?) [50719] 03:06:24.769 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:06:24.770 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:24.770 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:06:24.770 [debug] Running yt-dlp command for action: get_downloadable_status 03:06:24.808 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:06:24.808 [debug] QUERY OK source="settings" db=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 [] 03:06:24.808 [debug] QUERY OK source="settings" db=0.0ms idle=38.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:24.808 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wRF41ozmszY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/74/e0/74e09382b09aa31afaa799988d5e4fe5c6f823e7a6258a18080ab16b06f0f2b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:06:25.079 [info] GET / 03:06:25.079 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:06:25.080 [debug] QUERY OK source="settings" db=0.3ms idle=309.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:25.080 [debug] QUERY OK source="media_profiles" db=0.1ms idle=310.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:06:25.080 [debug] QUERY OK source="sources" db=0.1ms idle=272.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:06:25.093 [debug] QUERY OK source="media_items" db=12.9ms idle=272.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:06:25.096 [debug] QUERY OK source="media_items" db=2.1ms idle=285.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:06:25.097 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms 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 [] 03:06:25.097 [debug] QUERY OK source="settings" db=0.1ms idle=16.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:25.097 [debug] QUERY OK source="settings" db=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 [] 03:06:25.098 [debug] QUERY OK source="tasks" db=0.2ms idle=4.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"] 03:06:25.098 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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" = ?) [50719] 03:06:25.098 [debug] QUERY OK source="sources" db=0.3ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:25.102 [debug] QUERY OK source="media_items" db=2.5ms idle=2.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)) [] 03:06:25.102 [debug] QUERY OK source="media_items" db=0.3ms idle=4.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] 03:06:25.103 [debug] QUERY OK source="sources" db=0.1ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:06:25.111 [debug] QUERY OK source="media_items" db=7.2ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:06:25.113 [debug] QUERY OK source="media_items" db=2.2ms idle=12.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] 03:06:25.114 [debug] QUERY OK source="sources" db=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 (?,?)) [7, 3] 03:06:25.115 [info] Sent 200 in 36ms 03:06:25.769 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "duration" => 1098, "filename" => "/downloads/이효석아카데미/2026-10-17 "은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이/"은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이 [ViVdiknpn04].mp4", "id" => "ViVdiknpn04", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ViVdiknpn04", "playlist_index" => 2, "timestamp" => 1792201431, "title" => "\"은퇴했다고 모아둔 돈만 까먹어야 하나?\"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이", "upload_date" => "20261017"} 03:06:25.769 [debug] QUERY OK source="sources" db=0.1ms idle=666.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:25.770 [debug] QUERY OK source="sources" db=0.1ms idle=658.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] 03:06:25.775 [debug] QUERY OK source="media_items" db=5.4ms idle=656.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-17 01:43:51Z], 7] 03:06:26.190 [debug] QUERY OK source="media_items" db=413.7ms idle=661.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "\"은퇴했다고 모아둔 돈만 까먹어야 하나?\"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이", "8fbb5a32-cd7e-47ff-bea3-1e0f2f54aa2e", false, 1098, false, "ViVdiknpn04", "https://www.youtube.com/watch?v=ViVdiknpn04", 2, "/downloads/이효석아카데미/2026-10-17 "은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이/"은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이 [ViVdiknpn04].mp4", false, false, 7, [], 98, ~U[2026-10-17 01:43:51Z], ~U[2026-10-18 03:06:25Z], ~U[2026-10-18 03:06:25Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "\"은퇴했다고 모아둔 돈만 까먹어야 하나?\"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이", 1098, false, "ViVdiknpn04", "https://www.youtube.com/watch?v=ViVdiknpn04", "/downloads/이효석아카데미/2026-10-17 "은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이/"은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이 [ViVdiknpn04].mp4", false, 7, ~U[2026-10-17 01:43:51Z]] 03:06:26.190 [debug] QUERY OK source="sources" db=0.2ms idle=986.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] 03:06:26.191 [debug] QUERY OK source="media_profiles" db=1.0ms idle=421.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] 03:06:26.193 [debug] QUERY OK source="media_items" db=1.1ms idle=422.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 [50510] 03:06:26.193 [debug] Current batch of media processed. Will check again in 1000ms 03:06:27.194 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "duration" => 1759, "filename" => "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", "id" => "XMb_fg0lsYE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=XMb_fg0lsYE", "playlist_index" => 3, "timestamp" => 1792137623, "title" => "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", "upload_date" => "20261016"} 03:06:27.194 [debug] QUERY OK source="sources" db=0.2ms idle=1004.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:27.195 [debug] QUERY OK source="sources" db=0.1ms idle=1004.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:27.208 [debug] QUERY OK source="media_items" db=13.0ms idle=1003.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 08:00:23Z], 7] 03:06:27.323 [debug] QUERY OK source="media_items" db=114.1ms idle=13.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", "c61cb421-9609-4855-89e3-c300584ea975", false, 1759, false, "XMb_fg0lsYE", "https://www.youtube.com/watch?v=XMb_fg0lsYE", 3, "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", false, false, 7, [], 98, ~U[2026-10-16 08:00:23Z], ~U[2026-10-18 03:06:27Z], ~U[2026-10-18 03:06:27Z], "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", 1759, false, "XMb_fg0lsYE", "https://www.youtube.com/watch?v=XMb_fg0lsYE", "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", false, 7, ~U[2026-10-16 08:00:23Z]] 03:06:27.323 [debug] QUERY OK source="sources" db=0.2ms idle=128.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:27.323 [debug] QUERY OK source="media_profiles" db=0.1ms idle=127.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] 03:06:27.324 [debug] QUERY OK source="media_items" db=0.1ms idle=116.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 [50511] 03:06:27.324 [debug] Current batch of media processed. Will check again in 1000ms 03:06:27.408 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wRF41ozmszY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/74/e0/74e09382b09aa31afaa799988d5e4fe5c6f823e7a6258a18080ab16b06f0f2b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:06:27.408 [debug] Running yt-dlp command for action: download 03:06:27.409 [debug] QUERY OK source="settings" db=1.0ms idle=200.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:27.409 [debug] QUERY OK source="settings" db=0.0ms idle=86.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:27.409 [debug] QUERY OK source="settings" db=0.1ms idle=86.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:27.410 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wRF41ozmszY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6c/cb/6ccbc7090d507171e13afad06ed1bdd10ef0cbb63923752cdd15811b84e5882d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:06:28.325 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "duration" => 1053, "filename" => "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", "id" => "xM3Klkc6zAw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xM3Klkc6zAw", "playlist_index" => 4, "timestamp" => 1792051224, "title" => "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", "upload_date" => "20261015"} 03:06:28.325 [debug] QUERY OK source="sources" db=0.2ms idle=1001.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:28.326 [debug] QUERY OK source="sources" db=0.1ms idle=916.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] 03:06:28.333 [debug] QUERY OK source="media_items" db=7.1ms idle=916.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 08:00:24Z], 7] 03:06:28.335 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=924.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", "9f7885bf-3174-42f6-bf7d-bccfc70a7608", false, 1053, false, "xM3Klkc6zAw", "https://www.youtube.com/watch?v=xM3Klkc6zAw", 4, "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", false, false, 7, [], 97, ~U[2026-10-15 08:00:24Z], ~U[2026-10-18 03:06:28Z], ~U[2026-10-18 03:06:28Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", 1053, false, "xM3Klkc6zAw", "https://www.youtube.com/watch?v=xM3Klkc6zAw", "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", false, 7, ~U[2026-10-15 08:00:24Z]] 03:06:28.335 [debug] QUERY OK source="sources" db=0.1ms idle=126.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] 03:06:28.336 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.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] 03:06:28.336 [debug] QUERY OK source="media_items" db=0.1ms idle=9.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50300] 03:06:28.336 [debug] Current batch of media processed. Will check again in 1000ms 03:06:29.336 [debug] Current batch of media processed. Will check again in 1000ms 03:06:30.023 [info] GET /media/d59d19d2-ff42-4480-a5b2-3e08785affbf/stream 03:06:30.023 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "d59d19d2-ff42-4480-a5b2-3e08785affbf", "v" => "1792288817"} Pipelines: [:maybe_basic_auth] 03:06:30.023 [debug] QUERY OK source="media_items" db=0.2ms idle=1688.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["d59d19d2-ff42-4480-a5b2-3e08785affbf"] 03:06:30.024 [debug] Invalid range request for media item: d59d19d2-ff42-4480-a5b2-3e08785affbf - serving full file 03:06:30.024 [info] Sent 200 in 866µs 03:06:30.338 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "duration" => 645, "filename" => "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", "id" => "SC6jvx4Nkd8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=SC6jvx4Nkd8", "playlist_index" => 5, "timestamp" => 1792023864, "title" => "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", "upload_date" => "20261015"} 03:06:30.339 [debug] QUERY OK source="sources" db=0.3ms idle=314.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:30.339 [debug] QUERY OK source="sources" db=0.1ms idle=143.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] 03:06:30.346 [debug] QUERY OK source="media_items" db=6.8ms idle=143.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 00:24:24Z], 7] 03:06:30.348 [debug] QUERY OK source="media_items" db=0.8ms idle=150.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", "29ae23e3-917a-4236-a626-0d829d30cfbf", false, 645, false, "SC6jvx4Nkd8", "https://www.youtube.com/watch?v=SC6jvx4Nkd8", 5, "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", false, false, 7, [], 97, ~U[2026-10-15 00:24:24Z], ~U[2026-10-18 03:06:30Z], ~U[2026-10-18 03:06:30Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", 645, false, "SC6jvx4Nkd8", "https://www.youtube.com/watch?v=SC6jvx4Nkd8", "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", false, 7, ~U[2026-10-15 00:24:24Z]] 03:06:30.348 [debug] QUERY OK source="sources" db=0.1ms idle=136.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] 03:06:30.348 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:06:30.349 [debug] QUERY OK source="media_items" db=0.1ms idle=9.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 [50086] 03:06:30.349 [debug] Current batch of media processed. Will check again in 1000ms 03:06:31.350 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "duration" => 1656, "filename" => "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", "id" => "gH6kU4vq-vY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gH6kU4vq-vY", "playlist_index" => 6, "timestamp" => 1791973810, "title" => "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", "upload_date" => "20261014"} 03:06:31.350 [debug] QUERY OK source="sources" db=0.3ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:31.351 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:06:31.358 [debug] QUERY OK source="media_items" db=7.0ms idle=1002.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 10:30:10Z], 7] 03:06:31.359 [debug] QUERY OK source="media_items" db=0.8ms idle=1009.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", "c59327c4-1704-4e1f-b119-6fe2a7eb60f2", false, 1656, false, "gH6kU4vq-vY", "https://www.youtube.com/watch?v=gH6kU4vq-vY", 6, "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", false, false, 7, [], 96, ~U[2026-10-14 10:30:10Z], ~U[2026-10-18 03:06:31Z], ~U[2026-10-18 03:06:31Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", 1656, false, "gH6kU4vq-vY", "https://www.youtube.com/watch?v=gH6kU4vq-vY", "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", false, 7, ~U[2026-10-14 10:30:10Z]] 03:06:31.360 [debug] QUERY OK source="sources" db=0.1ms idle=146.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] 03:06:31.360 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:06:31.360 [debug] QUERY OK source="media_items" db=0.1ms idle=9.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 [50087] 03:06:31.360 [debug] Current batch of media processed. Will check again in 1000ms 03:06:32.361 [debug] Current batch of media processed. Will check again in 1000ms 03:06:33.363 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 1182, "filename" => "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", "id" => "AjM6b8kACtk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=AjM6b8kACtk", "playlist_index" => 7, "timestamp" => 1791970229, "title" => "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", "upload_date" => "20261014"} 03:06:33.364 [debug] QUERY OK source="sources" db=0.2ms idle=167.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:33.364 [debug] QUERY OK source="sources" db=0.1ms idle=168.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] 03:06:33.372 [debug] QUERY OK source="media_items" db=8.0ms idle=168.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 09:30:29Z], 7] 03:06:33.374 [debug] QUERY OK source="media_items" db=0.9ms idle=177.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", "aad6e62f-dcef-420d-9719-8eda10e03875", false, 1182, false, "AjM6b8kACtk", "https://www.youtube.com/watch?v=AjM6b8kACtk", 7, "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", false, false, 7, [], 96, ~U[2026-10-14 09:30:29Z], ~U[2026-10-18 03:06:33Z], ~U[2026-10-18 03:06:33Z], "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", 1182, false, "AjM6b8kACtk", "https://www.youtube.com/watch?v=AjM6b8kACtk", "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", false, 7, ~U[2026-10-14 09:30:29Z]] 03:06:33.374 [debug] QUERY OK source="sources" db=0.2ms idle=156.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] 03:06:33.374 [debug] QUERY OK source="media_profiles" db=0.1ms idle=10.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] 03:06:33.375 [debug] QUERY OK source="media_items" db=0.1ms idle=10.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50088] 03:06:33.375 [debug] Current batch of media processed. Will check again in 1000ms 03:06:34.375 [debug] Current batch of media processed. Will check again in 1000ms 03:06:35.377 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 1573, "filename" => "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", "id" => "Y-E5IX2FxHM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Y-E5IX2FxHM", "playlist_index" => 8, "timestamp" => 1791966639, "title" => "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", "upload_date" => "20261014"} 03:06:35.377 [debug] QUERY OK source="sources" db=0.2ms idle=181.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:35.378 [debug] QUERY OK source="sources" db=0.1ms idle=182.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:35.386 [debug] QUERY OK source="media_items" db=8.0ms idle=182.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 08:30:39Z], 7] 03:06:35.387 [debug] QUERY OK source="media_items" db=0.8ms idle=190.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", "652d88cf-5a8b-4b9b-82b5-b3c9b913cad7", false, 1573, false, "Y-E5IX2FxHM", "https://www.youtube.com/watch?v=Y-E5IX2FxHM", 8, "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", false, false, 7, [], 96, ~U[2026-10-14 08:30:39Z], ~U[2026-10-18 03:06:35Z], ~U[2026-10-18 03:06:35Z], "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", 1573, false, "Y-E5IX2FxHM", "https://www.youtube.com/watch?v=Y-E5IX2FxHM", "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", false, 7, ~U[2026-10-14 08:30:39Z]] 03:06:35.388 [debug] QUERY OK source="sources" db=0.2ms idle=166.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] 03:06:35.388 [debug] QUERY OK source="media_profiles" db=0.1ms idle=10.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] 03:06:35.389 [debug] QUERY OK source="media_items" db=0.1ms idle=10.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50089] 03:06:35.389 [debug] Current batch of media processed. Will check again in 1000ms 03:06:36.390 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "duration" => 1670, "filename" => "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", "id" => "PQ-u5Qb3YEU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", "playlist_index" => 9, "timestamp" => 1791885931, "title" => "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", "upload_date" => "20261013"} 03:06:36.390 [debug] QUERY OK source="sources" db=0.1ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:36.391 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:06:36.398 [debug] QUERY OK source="media_items" db=7.6ms idle=1002.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-13 10:05:31Z], 7] 03:06:36.400 [debug] QUERY OK source="media_items" db=0.7ms idle=1010.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", "5df9be47-380b-4502-b9ee-4257cb08f0ae", false, 1670, false, "PQ-u5Qb3YEU", "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", 9, "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", false, false, 7, [], 98, ~U[2026-10-13 10:05:31Z], ~U[2026-10-18 03:06:36Z], ~U[2026-10-18 03:06:36Z], "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", 1670, false, "PQ-u5Qb3YEU", "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", false, 7, ~U[2026-10-13 10:05:31Z]] 03:06:36.400 [debug] QUERY OK source="sources" db=0.2ms idle=176.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] 03:06:36.400 [debug] QUERY OK source="media_profiles" db=0.1ms idle=10.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] 03:06:36.401 [debug] QUERY OK source="media_items" db=0.1ms idle=10.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 [49878] 03:06:36.401 [debug] Current batch of media processed. Will check again in 1000ms 03:06:37.401 [debug] Current batch of media processed. Will check again in 1000ms 03:06:37.824 [info] GET /media/fcc5a43c-c97d-4146-98bc-d878d17dce08/stream 03:06:37.824 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "fcc5a43c-c97d-4146-98bc-d878d17dce08", "v" => "1788748913"} Pipelines: [:maybe_basic_auth] 03:06:37.824 [debug] QUERY OK source="media_items" db=0.5ms idle=1424.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["fcc5a43c-c97d-4146-98bc-d878d17dce08"] 03:06:37.825 [debug] Invalid range request for media item: fcc5a43c-c97d-4146-98bc-d878d17dce08 - serving full file 03:06:37.825 [info] Sent 200 in 1ms 03:06:38.571 [debug] Current batch of media processed. Will check again in 1000ms 03:06:39.175 [info] {"source":"oban","duration":1657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:06:39.572 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 3255, "filename" => "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", "id" => "k4Lj4HIwMDo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=k4Lj4HIwMDo", "playlist_index" => 10, "timestamp" => 1791676823, "title" => "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", "upload_date" => "20261011"} 03:06:39.572 [debug] QUERY OK source="sources" db=0.2ms idle=1376.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:39.573 [debug] QUERY OK source="sources" db=0.3ms idle=1377.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:39.580 [debug] QUERY OK source="media_items" db=7.0ms idle=1001.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-11 00:00:23Z], 7] 03:06:39.582 [debug] QUERY OK source="media_items" db=0.7ms idle=405.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", "87f0f770-7237-4367-8b2f-9e00d4d4b920", false, 3255, false, "k4Lj4HIwMDo", "https://www.youtube.com/watch?v=k4Lj4HIwMDo", 10, "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", false, false, 7, [], 98, ~U[2026-10-11 00:00:23Z], ~U[2026-10-18 03:06:39Z], ~U[2026-10-18 03:06:39Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", 3255, false, "k4Lj4HIwMDo", "https://www.youtube.com/watch?v=k4Lj4HIwMDo", "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", false, 7, ~U[2026-10-11 00:00:23Z]] 03:06:39.582 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [7] 03:06:39.582 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:06:39.583 [debug] QUERY OK source="media_items" db=0.1ms idle=9.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49257] 03:06:39.583 [debug] Current batch of media processed. Will check again in 1000ms 03:06:40.584 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "duration" => 1013, "filename" => "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", "id" => "mKiplSfm_yM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=mKiplSfm_yM", "playlist_index" => 11, "timestamp" => 1791598661, "title" => "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", "upload_date" => "20261010"} 03:06:40.584 [debug] QUERY OK source="sources" db=0.2ms idle=1002.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:40.585 [debug] QUERY OK source="sources" db=0.2ms idle=1002.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] 03:06:40.593 [debug] QUERY OK source="media_items" db=7.9ms idle=1002.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 02:17:41Z], 7] 03:06:40.594 [debug] QUERY OK source="media_items" db=0.8ms idle=1010.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", "91945b26-bac5-454d-a250-39e5ac9dc485", false, 1013, false, "mKiplSfm_yM", "https://www.youtube.com/watch?v=mKiplSfm_yM", 11, "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", false, false, 7, [], 97, ~U[2026-10-10 02:17:41Z], ~U[2026-10-18 03:06:40Z], ~U[2026-10-18 03:06:40Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", 1013, false, "mKiplSfm_yM", "https://www.youtube.com/watch?v=mKiplSfm_yM", "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", false, 7, ~U[2026-10-10 02:17:41Z]] 03:06:40.595 [debug] QUERY OK source="sources" db=0.3ms idle=18.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:40.595 [debug] QUERY OK source="media_profiles" db=0.2ms idle=10.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] 03:06:40.596 [debug] QUERY OK source="media_items" db=0.2ms idle=10.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49047] 03:06:40.596 [debug] Current batch of media processed. Will check again in 1000ms 03:06:41.405 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wRF41ozmszY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-subs --convert-subs srt --embed-subs --sub-langs all --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S]-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6c/cb/6ccbc7090d507171e13afad06ed1bdd10ef0cbb63923752cdd15811b84e5882d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:06:41.449 [debug] Running yt-dlp command for action: download_thumbnail 03:06:41.451 [debug] QUERY OK source="settings" db=1.0ms idle=857.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:41.452 [debug] QUERY OK source="settings" db=0.1ms idle=857.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:41.452 [debug] QUERY OK source="settings" db=0.1ms idle=856.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:06:41.452 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wRF41ozmszY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50719/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/42/5a/425a6616905a91ae238081c771816bc39de381560f7ef79c8e6ae2b0633c991f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:06:41.596 [debug] Current batch of media processed. Will check again in 1000ms 03:06:42.598 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "duration" => 1104, "filename" => "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", "id" => "nttINf-CD18", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=nttINf-CD18", "playlist_index" => 12, "timestamp" => 1791590439, "title" => "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", "upload_date" => "20261010"} 03:06:42.598 [debug] QUERY OK source="sources" db=0.2ms idle=1146.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:42.599 [debug] QUERY OK source="sources" db=0.1ms idle=1146.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] 03:06:42.606 [debug] QUERY OK source="media_items" db=7.2ms idle=1021.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 00:00:39Z], 7] 03:06:42.608 [debug] QUERY OK source="media_items" db=0.7ms idle=411.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", "6223b42b-3512-4984-bdfd-0e5e62425a85", false, 1104, false, "nttINf-CD18", "https://www.youtube.com/watch?v=nttINf-CD18", 12, "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", false, false, 7, [], 97, ~U[2026-10-10 00:00:39Z], ~U[2026-10-18 03:06:42Z], ~U[2026-10-18 03:06:42Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", 1104, false, "nttINf-CD18", "https://www.youtube.com/watch?v=nttINf-CD18", "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", false, 7, ~U[2026-10-10 00:00:39Z]] 03:06:42.608 [debug] QUERY OK source="sources" db=0.1ms idle=29.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] 03:06:42.608 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.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] 03:06:42.609 [debug] QUERY OK source="media_items" db=0.2ms idle=9.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 [49048] 03:06:42.609 [debug] Current batch of media processed. Will check again in 1000ms 03:06:43.044 [info] GET /media/51fd3a06-37b6-4d4b-8239-9ee2b24ab3be/stream 03:06:43.044 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "51fd3a06-37b6-4d4b-8239-9ee2b24ab3be", "v" => "1791770412"} Pipelines: [:maybe_basic_auth] 03:06:43.045 [debug] QUERY OK source="media_items" db=1.1ms idle=437.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["51fd3a06-37b6-4d4b-8239-9ee2b24ab3be"] 03:06:43.046 [debug] Invalid range request for media item: 51fd3a06-37b6-4d4b-8239-9ee2b24ab3be - serving full file 03:06:43.046 [info] Sent 200 in 1ms 03:06:44.261 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wRF41ozmszY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50719/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/42/5a/425a6616905a91ae238081c771816bc39de381560f7ef79c8e6ae2b0633c991f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one 03:06:44.262 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "duration" => 2889, "filename" => "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", "id" => "UQH8C5tAN8c", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=UQH8C5tAN8c", "playlist_index" => 13, "timestamp" => 1791518428, "title" => "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", "upload_date" => "20261009"} 03:06:44.262 [debug] QUERY OK db=0.0ms idle=1654.0ms begin [] 03:06:44.263 [debug] QUERY OK source="sources" db=0.4ms idle=1653.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:44.263 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_filepath" = ?, "media_downloaded_at" = ?, "metadata_filepath" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/이효석아카데미/2026-10-18 "코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산/"코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산 [wRF41ozmszY].mp4", ~U[2026-10-18 03:06:41Z], "/downloads/이효석아카데미/2026-10-18 "코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산/"코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산 [wRF41ozmszY].info.json", "/downloads/이효석아카데미/2026-10-18 "코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산/"코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산 [wRF41ozmszY]-thumb.jpg", ~U[2026-10-18 03:06:44Z], 50719] 03:06:44.263 [debug] QUERY OK source="sources" db=0.0ms idle=1654.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:44.263 [debug] QUERY OK source="media_metadata" db=0.4ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/50719/metadata.json.gz", "/config/metadata/media_items/50719/thumbnail.jpg", 50719, ~U[2026-10-18 03:06:44Z], ~U[2026-10-18 03:06:44Z]] 03:06:44.264 [debug] QUERY OK db=0.3ms commit [] 03:06:44.265 [debug] QUERY OK source="media_items" db=1.0ms idle=1.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [405852645, ~U[2026-10-18 03:06:44Z], 50719] 03:06:44.265 [info] User scripts lifecyle file either not present or is empty. Skipping. 03:06:44.271 [info] {"args":{"id":50719},"id":16363,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":19943123,"event":"job:stop","queue_time":321868,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 03:06:44.271 [debug] QUERY OK source="media_items" db=8.3ms idle=1217.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 04:00:28Z], 7] 03:06:44.313 [debug] QUERY OK source="media_items" db=40.3ms idle=9.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", "40d95cf9-2b21-488b-87fc-b2e9bb94e696", false, 2889, false, "UQH8C5tAN8c", "https://www.youtube.com/watch?v=UQH8C5tAN8c", 13, "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", false, false, 7, [], 97, ~U[2026-10-09 04:00:28Z], ~U[2026-10-18 03:06:44Z], ~U[2026-10-18 03:06:44Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", 2889, false, "UQH8C5tAN8c", "https://www.youtube.com/watch?v=UQH8C5tAN8c", "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", false, 7, ~U[2026-10-09 04:00:28Z]] 03:06:44.313 [debug] QUERY OK source="sources" db=0.2ms idle=47.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] 03:06:44.313 [debug] QUERY OK source="media_profiles" db=0.1ms idle=42.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] 03:06:44.315 [debug] QUERY OK source="media_items" db=1.1ms idle=42.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49049] 03:06:44.315 [debug] Current batch of media processed. Will check again in 1000ms 03:06:45.316 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "duration" => 735, "filename" => "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", "id" => "kiDCF84SER0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kiDCF84SER0", "playlist_index" => 14, "timestamp" => 1791504310, "title" => "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", "upload_date" => "20261009"} 03:06:45.316 [debug] QUERY OK source="sources" db=0.3ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:45.317 [debug] QUERY OK source="sources" db=0.1ms idle=1003.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:45.324 [debug] QUERY OK source="media_items" db=6.8ms idle=1002.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 00:05:10Z], 7] 03:06:45.325 [debug] QUERY OK source="media_items" db=0.4ms idle=993.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", "37803591-99dc-4faf-923a-eacaf26d4c0e", false, 735, false, "kiDCF84SER0", "https://www.youtube.com/watch?v=kiDCF84SER0", 14, "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", false, false, 7, [], 97, ~U[2026-10-09 00:05:10Z], ~U[2026-10-18 03:06:45Z], ~U[2026-10-18 03:06:45Z], "📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", 735, false, "kiDCF84SER0", "https://www.youtube.com/watch?v=kiDCF84SER0", "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", false, 7, ~U[2026-10-09 00:05:10Z]] 03:06:45.325 [debug] QUERY OK source="sources" db=0.1ms idle=60.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] 03:06:45.325 [debug] QUERY OK source="media_profiles" db=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] 03:06:45.326 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [48839] 03:06:45.326 [debug] Current batch of media processed. Will check again in 1000ms 03:06:45.850 [info] GET /media/3fdf31d1-0e07-4ea8-ac62-44d7746abf04/stream 03:06:45.850 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "3fdf31d1-0e07-4ea8-ac62-44d7746abf04", "v" => "1792119947"} Pipelines: [:maybe_basic_auth] 03:06:45.852 [debug] QUERY OK source="media_items" db=1.1ms idle=526.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["3fdf31d1-0e07-4ea8-ac62-44d7746abf04"] 03:06:45.852 [debug] Invalid range request for media item: 3fdf31d1-0e07-4ea8-ac62-44d7746abf04 - serving full file 03:06:45.852 [info] Sent 200 in 1ms 03:06:46.483 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "duration" => 2941, "filename" => "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", "id" => "Wd2F-sEasVw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Wd2F-sEasVw", "playlist_index" => 15, "timestamp" => 1791360038, "title" => "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", "upload_date" => "20261007"} 03:06:46.483 [debug] QUERY OK source="sources" db=0.1ms idle=1158.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:46.484 [debug] QUERY OK source="sources" db=0.1ms idle=1158.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] 03:06:46.585 [debug] QUERY OK source="media_items" db=100.6ms idle=1158.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 08:00:38Z], 7] 03:06:46.586 [debug] QUERY OK source="media_items" db=1.1ms idle=733.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", "d8b161f6-e4ad-455c-8d18-1d8dc86293d5", false, 2941, false, "Wd2F-sEasVw", "https://www.youtube.com/watch?v=Wd2F-sEasVw", 15, "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", false, false, 7, [], 98, ~U[2026-10-07 08:00:38Z], ~U[2026-10-18 03:06:46Z], ~U[2026-10-18 03:06:46Z], "📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", 2941, false, "Wd2F-sEasVw", "https://www.youtube.com/watch?v=Wd2F-sEasVw", "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", false, 7, ~U[2026-10-07 08:00:38Z]] 03:06:46.587 [debug] QUERY OK source="sources" db=0.1ms idle=321.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] 03:06:46.587 [debug] QUERY OK source="media_profiles" db=0.0ms idle=103.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] 03:06:46.587 [debug] QUERY OK source="media_items" db=0.1ms idle=103.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 [48633] 03:06:46.587 [debug] Current batch of media processed. Will check again in 1000ms 03:06:47.588 [debug] Current batch of media processed. Will check again in 1000ms 03:06:48.589 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 1647, "filename" => "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", "id" => "ZndXfOdGgkI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ZndXfOdGgkI", "playlist_index" => 16, "timestamp" => 1791277217, "title" => "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", "upload_date" => "20261006"} 03:06:48.589 [debug] QUERY OK source="sources" db=0.3ms idle=905.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:48.590 [debug] QUERY OK source="sources" db=0.2ms idle=906.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:48.598 [debug] QUERY OK source="media_items" db=7.8ms idle=906.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 09:00:17Z], 7] 03:06:48.599 [debug] QUERY OK source="media_items" db=0.9ms idle=914.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", "554bb8b9-f850-4240-ab65-d0220e5618c2", false, 1647, false, "ZndXfOdGgkI", "https://www.youtube.com/watch?v=ZndXfOdGgkI", 16, "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", false, false, 7, [], 97, ~U[2026-10-06 09:00:17Z], ~U[2026-10-18 03:06:48Z], ~U[2026-10-18 03:06:48Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", 1647, false, "ZndXfOdGgkI", "https://www.youtube.com/watch?v=ZndXfOdGgkI", "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", false, 7, ~U[2026-10-06 09:00:17Z]] 03:06:48.600 [debug] QUERY OK source="sources" db=0.2ms idle=331.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] 03:06:48.600 [debug] QUERY OK source="media_profiles" db=0.1ms idle=10.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] 03:06:48.601 [debug] QUERY OK source="media_items" db=0.1ms idle=10.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48425] 03:06:48.601 [debug] Current batch of media processed. Will check again in 1000ms 03:06:49.601 [debug] Current batch of media processed. Will check again in 1000ms 03:06:50.603 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "duration" => 1649, "filename" => "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", "id" => "axhb9H_ic3I", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=axhb9H_ic3I", "playlist_index" => 17, "timestamp" => 1791273609, "title" => "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", "upload_date" => "20261006"} 03:06:50.603 [debug] QUERY OK source="sources" db=0.1ms idle=919.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:50.603 [debug] QUERY OK source="sources" db=0.0ms idle=919.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] 03:06:50.611 [debug] QUERY OK source="media_items" db=7.6ms idle=920.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 08:00:09Z], 7] 03:06:50.613 [debug] QUERY OK source="media_items" db=0.8ms idle=928.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", "638bf8a8-810a-4391-be3e-4f7809cae9c6", false, 1649, false, "axhb9H_ic3I", "https://www.youtube.com/watch?v=axhb9H_ic3I", 17, "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", false, false, 7, [], 97, ~U[2026-10-06 08:00:09Z], ~U[2026-10-18 03:06:50Z], ~U[2026-10-18 03:06:50Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", 1649, false, "axhb9H_ic3I", "https://www.youtube.com/watch?v=axhb9H_ic3I", "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", false, 7, ~U[2026-10-06 08:00:09Z]] 03:06:50.613 [debug] QUERY OK source="sources" db=0.1ms idle=341.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] 03:06:50.614 [debug] QUERY OK source="media_profiles" db=0.1ms idle=10.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:06:50.614 [debug] QUERY OK source="media_items" db=0.1ms idle=10.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48426] 03:06:50.614 [debug] Current batch of media processed. Will check again in 1000ms 03:06:51.615 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "duration" => 519, "filename" => "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", "id" => "dgKLdPKNgB0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=dgKLdPKNgB0", "playlist_index" => 18, "timestamp" => 1791244144, "title" => "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", "upload_date" => "20261005"} 03:06:51.615 [debug] QUERY OK source="sources" db=0.1ms idle=1002.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:51.615 [debug] QUERY OK source="sources" db=0.0ms idle=1002.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:51.623 [debug] QUERY OK source="media_items" db=7.8ms idle=1001.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 23:49:04Z], 7] 03:06:51.625 [debug] QUERY OK source="media_items" db=0.5ms idle=1009.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", "eccf9fc1-4195-4dce-8d0d-4746aa19029b", false, 519, false, "dgKLdPKNgB0", "https://www.youtube.com/watch?v=dgKLdPKNgB0", 18, "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", false, false, 7, [], 98, ~U[2026-10-05 23:49:04Z], ~U[2026-10-18 03:06:51Z], ~U[2026-10-18 03:06:51Z], "엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", 519, false, "dgKLdPKNgB0", "https://www.youtube.com/watch?v=dgKLdPKNgB0", "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", false, 7, ~U[2026-10-05 23:49:04Z]] 03:06:51.625 [debug] QUERY OK source="sources" db=0.1ms idle=351.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] 03:06:51.625 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.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] 03:06:51.626 [debug] QUERY OK source="media_items" db=0.1ms idle=9.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48219] 03:06:51.626 [debug] Current batch of media processed. Will check again in 1000ms 03:06:52.627 [debug] Current batch of media processed. Will check again in 1000ms 03:06:53.628 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "duration" => 680, "filename" => "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", "id" => "XIEitZGI4dg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=XIEitZGI4dg", "playlist_index" => 19, "timestamp" => 1791100817, "title" => "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", "upload_date" => "20261004"} 03:06:53.628 [debug] QUERY OK source="sources" db=0.2ms idle=944.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:53.629 [debug] QUERY OK source="sources" db=0.1ms idle=945.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:53.637 [debug] QUERY OK source="media_items" db=8.1ms idle=945.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 08:00:17Z], 7] 03:06:53.639 [debug] QUERY OK source="media_items" db=0.9ms idle=954.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", "36ea9692-fe1a-492c-9a80-8eb4f4bc4ff3", false, 680, false, "XIEitZGI4dg", "https://www.youtube.com/watch?v=XIEitZGI4dg", 19, "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", false, false, 7, [], 97, ~U[2026-10-04 08:00:17Z], ~U[2026-10-18 03:06:53Z], ~U[2026-10-18 03:06:53Z], "♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", 680, false, "XIEitZGI4dg", "https://www.youtube.com/watch?v=XIEitZGI4dg", "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", false, 7, ~U[2026-10-04 08:00:17Z]] 03:06:53.639 [debug] QUERY OK source="sources" db=0.1ms idle=362.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] 03:06:53.639 [debug] QUERY OK source="media_profiles" db=0.1ms idle=10.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] 03:06:53.640 [debug] QUERY OK source="media_items" db=0.2ms idle=10.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48015] 03:06:53.640 [debug] Current batch of media processed. Will check again in 1000ms 03:06:54.641 [debug] Current batch of media processed. Will check again in 1000ms 03:06:55.642 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "duration" => 1202, "filename" => "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", "id" => "f1Z6B9NRpNA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=f1Z6B9NRpNA", "playlist_index" => 20, "timestamp" => 1791072012, "title" => "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", "upload_date" => "20261004"} 03:06:55.642 [debug] QUERY OK source="sources" db=0.2ms idle=958.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:55.643 [debug] QUERY OK source="sources" db=0.0ms idle=959.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:55.650 [debug] QUERY OK source="media_items" db=6.8ms idle=959.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 00:00:12Z], 7] 03:06:55.651 [debug] QUERY OK source="media_items" db=0.8ms idle=966.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", "91c64215-35b7-4afb-bbd8-70bc0a9f2bd5", false, 1202, false, "f1Z6B9NRpNA", "https://www.youtube.com/watch?v=f1Z6B9NRpNA", 20, "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", false, false, 7, [], 97, ~U[2026-10-04 00:00:12Z], ~U[2026-10-18 03:06:55Z], ~U[2026-10-18 03:06:55Z], "🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", 1202, false, "f1Z6B9NRpNA", "https://www.youtube.com/watch?v=f1Z6B9NRpNA", "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", false, 7, ~U[2026-10-04 00:00:12Z]] 03:06:55.651 [debug] QUERY OK source="sources" db=0.1ms idle=372.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] 03:06:55.652 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:06:55.652 [debug] QUERY OK source="media_items" db=0.1ms idle=8.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 [47809] 03:06:55.652 [debug] Current batch of media processed. Will check again in 1000ms 03:06:56.653 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "duration" => 1202, "filename" => "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", "id" => "ALvXoiFY6zM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ALvXoiFY6zM", "playlist_index" => 21, "timestamp" => 1790985624, "title" => "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", "upload_date" => "20261003"} 03:06:56.653 [debug] QUERY OK source="sources" db=0.1ms idle=1002.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:56.654 [debug] QUERY OK source="sources" db=0.1ms idle=1002.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.662 [debug] QUERY OK source="media_items" db=7.9ms idle=1002.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 00:00:24Z], 7] 03:06:56.663 [debug] QUERY OK source="media_items" db=0.9ms idle=1010.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", "4a378b20-4402-430a-815c-00dcdcb53b9c", false, 1202, false, "ALvXoiFY6zM", "https://www.youtube.com/watch?v=ALvXoiFY6zM", 21, "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", false, false, 7, [], 98, ~U[2026-10-03 00:00:24Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", 1202, false, "ALvXoiFY6zM", "https://www.youtube.com/watch?v=ALvXoiFY6zM", "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", false, 7, ~U[2026-10-03 00:00:24Z]] 03:06:56.664 [debug] QUERY OK source="sources" db=0.1ms idle=382.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] 03:06:56.664 [debug] QUERY OK source="media_profiles" db=0.3ms idle=10.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] 03:06:56.665 [debug] QUERY OK source="media_items" db=0.2ms idle=10.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47600] 03:06:56.665 [debug] Current batch of media processed. Will check again in 1000ms 03:06:56.706 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@hs_academy --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/이효석아카데미/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/06/1a/061aab621eb29895eff9fa2f21f548271dba6726f2be184053c7c31107a5d9eb.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/39/a1/39a19ab79d3c06d2a639fd64bfa169143c84fad8d1c1e73d88279711d0dc8a4e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 03:06:56.707 [debug] Gracefully stopping file follower 03:06:56.708 [debug] QUERY OK source="sources" db=1.0ms idle=45.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 03:06:56.708 [debug] QUERY OK source="sources" db=0.1ms idle=45.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.716 [debug] QUERY OK source="media_items" db=7.3ms idle=44.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-18 00:00:31Z], 7] 03:06:56.718 [debug] QUERY OK source="media_items" db=1.0ms idle=52.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#ai #엔비디아 #주식투자 #미국주식 #ai버블 #코어위브 #gpu #ram", "\"코어위브 망한다는 소리에 캐시 우드는 더 샀다\"...빚더미 GPU 사업을 보는 정반대의 계산", "ac82aba4-18ea-450a-a63b-f51c0322dfac", false, 1469, false, "wRF41ozmszY", "https://www.youtube.com/watch?v=wRF41ozmszY", 1, "/downloads/이효석아카데미/2026-10-18 "코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산/"코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산 [wRF41ozmszY].mp4", false, false, 7, [], 98, ~U[2026-10-18 00:00:31Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#ai #엔비디아 #주식투자 #미국주식 #ai버블 #코어위브 #gpu #ram", "\"코어위브 망한다는 소리에 캐시 우드는 더 샀다\"...빚더미 GPU 사업을 보는 정반대의 계산", 1469, false, "wRF41ozmszY", "https://www.youtube.com/watch?v=wRF41ozmszY", "/downloads/이효석아카데미/2026-10-18 "코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산/"코어위브 망한다는 소리에 캐시 우드는 더 샀다"...빚더미 GPU 사업을 보는 정반대의 계산 [wRF41ozmszY].mp4", false, 7, ~U[2026-10-18 00:00:31Z]] 03:06:56.718 [debug] QUERY OK source="sources" db=0.1ms idle=53.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.725 [debug] QUERY OK source="media_items" db=6.6ms idle=10.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-17 01:43:51Z], 7] 03:06:56.726 [debug] QUERY OK source="media_items" db=0.7ms idle=16.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "\"은퇴했다고 모아둔 돈만 까먹어야 하나?\"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이", "960f768a-2199-4386-b043-61e0707eb850", false, 1098, false, "ViVdiknpn04", "https://www.youtube.com/watch?v=ViVdiknpn04", 2, "/downloads/이효석아카데미/2026-10-17 "은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이/"은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이 [ViVdiknpn04].mp4", false, false, 7, [], 98, ~U[2026-10-17 01:43:51Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.16\n\n#커버드콜 #배당etf #노후투자 #노후준비 #kodex #etf #etf투자 #etf추천", "\"은퇴했다고 모아둔 돈만 까먹어야 하나?\"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이", 1098, false, "ViVdiknpn04", "https://www.youtube.com/watch?v=ViVdiknpn04", "/downloads/이효석아카데미/2026-10-17 "은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이/"은퇴했다고 모아둔 돈만 까먹어야 하나?"... 매달 부족한 생활비를 채우는 커버드콜 투자금의 결정적인 차이 [ViVdiknpn04].mp4", false, 7, ~U[2026-10-17 01:43:51Z]] 03:06:56.727 [debug] QUERY OK source="sources" db=0.9ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.734 [debug] QUERY OK source="media_items" db=6.4ms idle=10.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 08:00:23Z], 7] 03:06:56.735 [debug] QUERY OK source="media_items" db=0.6ms idle=16.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", "5a84cd78-1fa7-4a21-91bc-393683a9a183", false, 1759, false, "XMb_fg0lsYE", "https://www.youtube.com/watch?v=XMb_fg0lsYE", 3, "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", false, false, 7, [], 98, ~U[2026-10-16 08:00:23Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#반도체 #금리 #ai #gpu #반도체 #openai #gpt #tesla #instinct", "‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]", 1759, false, "XMb_fg0lsYE", "https://www.youtube.com/watch?v=XMb_fg0lsYE", "/downloads/이효석아카데미/2026-10-16 ‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부]/‘이렇게 무서울 때 투자하는 겁니다’ 흔들리는 시장 속에서 투자자로 살아남는 법ㅣ박세익 전무 [2부] [XMb_fg0lsYE].mp4", false, 7, ~U[2026-10-16 08:00:23Z]] 03:06:56.736 [debug] QUERY OK source="sources" db=0.8ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.743 [debug] QUERY OK source="media_items" db=6.5ms idle=10.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 08:00:24Z], 7] 03:06:56.744 [debug] QUERY OK source="media_items" db=0.8ms idle=16.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", "9ae3e0d8-6bed-4d5b-9fcd-2bd4e77ab980", false, 1053, false, "xM3Klkc6zAw", "https://www.youtube.com/watch?v=xM3Klkc6zAw", 4, "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", false, false, 7, [], 97, ~U[2026-10-15 08:00:24Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#일론머스크 #테슬라 #스페이스x #반도체 #그록 #grok #ai", "\"머스크가 데이터센터를 서두르는 이유\"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다", 1053, false, "xM3Klkc6zAw", "https://www.youtube.com/watch?v=xM3Klkc6zAw", "/downloads/이효석아카데미/2026-10-15 "머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다/"머스크가 데이터센터를 서두르는 이유"…그록과 로봇까지 직접 잇는 AI 수직계열화를 노리고 있습니다 [xM3Klkc6zAw].mp4", false, 7, ~U[2026-10-15 08:00:24Z]] 03:06:56.746 [debug] QUERY OK source="sources" db=1.0ms 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" = ?) [7] 03:06:56.753 [debug] QUERY OK source="media_items" db=6.8ms idle=10.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-15 00:24:24Z], 7] 03:06:56.797 [debug] QUERY OK source="media_items" db=43.9ms idle=17.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", "b9921b7f-ba93-4b0b-bd22-36dd56f2060e", false, 645, false, "SC6jvx4Nkd8", "https://www.youtube.com/watch?v=SC6jvx4Nkd8", 5, "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", false, false, 7, [], 97, ~U[2026-10-15 00:24:24Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.15\n\n#주가급락 #투자 #반도체 #엔비디아 #블랙록 #코스피 #삼성전자 #sk하이닉스", "[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다", 645, false, "SC6jvx4Nkd8", "https://www.youtube.com/watch?v=SC6jvx4Nkd8", "/downloads/이효석아카데미/2026-10-15 [속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다/[속보효] 최근 주가 급락의 범인을 찾았습니다. AI 시장이 지금 의심하는 건 따로 있습니다 [SC6jvx4Nkd8].mp4", false, 7, ~U[2026-10-15 00:24:24Z]] 03:06:56.799 [debug] QUERY OK source="sources" db=1.0ms idle=54.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] 03:06:56.806 [debug] QUERY OK source="media_items" db=7.1ms idle=54.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 10:30:10Z], 7] 03:06:56.808 [debug] QUERY OK source="media_items" db=0.9ms idle=61.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", "7eb855c9-2ee8-4328-9683-8f6072378def", false, 1656, false, "gH6kU4vq-vY", "https://www.youtube.com/watch?v=gH6kU4vq-vY", 6, "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", false, false, 7, [], 96, ~U[2026-10-14 10:30:10Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🌟 박지원 아나운서 인스타그램 👉 https://www.instagram.com/wonlyu__/\n☎ 박지원 아나운서 텔레그램 👉 https://t.me/wonlyu9496\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.14\n\n#메타 #저커버그 #ai #에이전트ai #뮤즈 #구글 #반도체", "“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]", 1656, false, "gH6kU4vq-vY", "https://www.youtube.com/watch?v=gH6kU4vq-vY", "/downloads/이효석아카데미/2026-10-14 “우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부]/“우리 고객이니까 뺏어가지 마” 메타가 구글보다 먼저 당신의 취향을 알아야 하는 이유 [Z1 뉴스 - 1부] [gH6kU4vq-vY].mp4", false, 7, ~U[2026-10-14 10:30:10Z]] 03:06:56.809 [debug] QUERY OK source="sources" db=1.0ms idle=55.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] 03:06:56.818 [debug] QUERY OK source="media_items" db=7.8ms idle=12.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 09:30:29Z], 7] 03:06:56.819 [debug] QUERY OK source="media_items" db=1.0ms idle=19.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", "469b9810-0712-45bc-b675-424401e2d568", false, 1182, false, "AjM6b8kACtk", "https://www.youtube.com/watch?v=AjM6b8kACtk", 7, "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", false, false, 7, [], 96, ~U[2026-10-14 09:30:29Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]", 1182, false, "AjM6b8kACtk", "https://www.youtube.com/watch?v=AjM6b8kACtk", "/downloads/이효석아카데미/2026-10-14 주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부]/주가가 폭락하고 현금흐름까지 마이너스였다…테슬라 재무제표에 남은 ‘테라팹’의 흔적 | 맹성준 작가 [2부] [AjM6b8kACtk].mp4", false, 7, ~U[2026-10-14 09:30:29Z]] 03:06:56.820 [debug] QUERY OK source="sources" db=0.8ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.828 [debug] QUERY OK source="media_items" db=7.0ms idle=12.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-14 08:30:39Z], 7] 03:06:56.829 [debug] QUERY OK source="media_items" db=0.8ms idle=18.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", "bd618e18-25f3-4ce7-b419-895485c58625", false, 1573, false, "Y-E5IX2FxHM", "https://www.youtube.com/watch?v=Y-E5IX2FxHM", 8, "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", false, false, 7, [], 96, ~U[2026-10-14 08:30:39Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 전 테슬라 엔지니어이자, 드라이브 테크 오디세이 유튜브를 운영하고 계신\n맹성준 작가님의 신간 [모빌리티, 큰 파도]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요.\n👉 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=403735167\n\n🚗 맹성준 작가님 유튜브 \nhttps://www.youtube.com/@DriveTechOdyssey\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n맹성준 작가님이 전하는 모빌리티 산업의 미래\n[1부] https://youtu.be/Y-E5IX2FxHM\n[2부] https://youtu.be/AjM6b8kACtk\n\n🗓️ 촬영일 : 10.13\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]", 1573, false, "Y-E5IX2FxHM", "https://www.youtube.com/watch?v=Y-E5IX2FxHM", "/downloads/이효석아카데미/2026-10-14 자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부]/자동차 회사 하나로는 성에 차지 않았다…원료부터 판매까지 삼키며 ‘테슬라 제국’을 세운 머스크 | 맹성준 작가 [1부] [Y-E5IX2FxHM].mp4", false, 7, ~U[2026-10-14 08:30:39Z]] 03:06:56.830 [debug] QUERY OK source="sources" db=0.9ms idle=11.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] 03:06:56.837 [debug] QUERY OK source="media_items" db=6.8ms idle=11.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-13 10:05:31Z], 7] 03:06:56.839 [debug] QUERY OK source="media_items" db=0.7ms idle=17.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", "12ac4ec6-b374-48f2-bf04-0e00bf9e2adf", false, 1670, false, "PQ-u5Qb3YEU", "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", 9, "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", false, false, 7, [], 98, ~U[2026-10-13 10:05:31Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "💰 격변의 위기를 기회로 바꾸는 55가지 돈의 흐름 [머니 트렌드 2027]\n👉 https://vo.la/SQRx8oT\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.13\n\n#삼성전자 #sk하이닉스 #코스피 #코스피급락 #주도주 #반도체 #", "“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]", 1670, false, "PQ-u5Qb3YEU", "https://www.youtube.com/watch?v=PQ-u5Qb3YEU", "/downloads/이효석아카데미/2026-10-13 “다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부]/“다시 한 번 빠지잖아요?” 코스피 반등의 함정, 블랙먼데이 차트가 던지는 섬뜩한 경고ㅣ박세익 전무 [1부] [PQ-u5Qb3YEU].mp4", false, 7, ~U[2026-10-13 10:05:31Z]] 03:06:56.840 [debug] QUERY OK source="sources" db=0.8ms idle=11.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] 03:06:56.847 [debug] QUERY OK source="media_items" db=6.6ms idle=11.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-11 00:00:23Z], 7] 03:06:56.848 [debug] QUERY OK source="media_items" db=0.8ms idle=16.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", "ff48623a-2453-44c2-bddb-f1d0ec98f2df", false, 3255, false, "k4Lj4HIwMDo", "https://www.youtube.com/watch?v=k4Lj4HIwMDo", 10, "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", false, false, 7, [], 98, ~U[2026-10-11 00:00:23Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n❗️ 본 영상은 10.6 공개된 '박형근 실장님'의 인터뷰 풀영상입니다. 시청에 참고 바랍니다.\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "\"테슬라는 페인트 칠하는 공정까지 없애버렸다\"...100년 된 자동차 제조법을 갈아엎는 진짜 이유", 3255, false, "k4Lj4HIwMDo", "https://www.youtube.com/watch?v=k4Lj4HIwMDo", "/downloads/이효석아카데미/2026-10-11 "테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유/"테슬라는 페인트 칠하는 공정까지 없애버렸다"...100년 된 자동차 제조법을 갈아엎는 진짜 이유 [k4Lj4HIwMDo].mp4", false, 7, ~U[2026-10-11 00:00:23Z]] 03:06:56.850 [debug] QUERY OK source="sources" db=1.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.858 [debug] QUERY OK source="media_items" db=8.1ms idle=11.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 02:17:41Z], 7] 03:06:56.859 [debug] QUERY OK source="media_items" db=0.6ms idle=18.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", "e7256f2a-b516-4b55-9dcc-81c4ccb755bc", false, 1013, false, "mKiplSfm_yM", "https://www.youtube.com/watch?v=mKiplSfm_yM", 11, "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", false, false, 7, [], 97, ~U[2026-10-10 02:17:41Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr", "AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고", 1013, false, "mKiplSfm_yM", "https://www.youtube.com/watch?v=mKiplSfm_yM", "/downloads/이효석아카데미/2026-10-10 AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고/AI 투자자들에게 다모다란 교수님이 던지는 엄중한 경고 [mKiplSfm_yM].mp4", false, 7, ~U[2026-10-10 02:17:41Z]] 03:06:56.861 [debug] QUERY OK source="sources" db=0.9ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.869 [debug] QUERY OK source="media_items" db=7.9ms idle=12.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-10 00:00:39Z], 7] 03:06:56.870 [debug] QUERY OK source="media_items" db=0.7ms idle=19.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", "256c7f6b-c301-4ef2-a692-bbd84cc7934b", false, 1104, false, "nttINf-CD18", "https://www.youtube.com/watch?v=nttINf-CD18", 12, "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", false, false, 7, [], 97, ~U[2026-10-10 00:00:39Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.6\n\n#주식 #etf #isa #투자 #삼성전자 #하이닉스 #s&p500 #나스닥100 #etf투자 #isa계좌 #isa통장 #절세 #세금", "\"ISA는 가입했다고 끝이 아닙니다\"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'", 1104, false, "nttINf-CD18", "https://www.youtube.com/watch?v=nttINf-CD18", "/downloads/이효석아카데미/2026-10-10 "ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합'/"ISA는 가입했다고 끝이 아닙니다"...만들어놓고 멈춰버린 계좌를 채우는 '가장 단순한 조합' [nttINf-CD18].mp4", false, 7, ~U[2026-10-10 00:00:39Z]] 03:06:56.871 [debug] QUERY OK source="sources" db=1.0ms idle=12.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.879 [debug] QUERY OK source="media_items" db=7.4ms idle=12.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 04:00:28Z], 7] 03:06:56.881 [debug] QUERY OK source="media_items" db=1.0ms idle=18.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", "789ad05c-1b2e-437f-aa40-c5b693753dd9", false, 2889, false, "UQH8C5tAN8c", "https://www.youtube.com/watch?v=UQH8C5tAN8c", 13, "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", false, false, 7, [], 97, ~U[2026-10-09 04:00:28Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n김단테의 AI 이야기\n[1부] https://youtu.be/sNOPsCq37IA\n[2부] https://youtu.be/LnyC13ByVQw\n[풀영상] https://youtu.be/UQH8C5tAN8c\n\n🗓️ 촬영일 : 10.01\n❗️ 이 영상은 10.2 공개된 '내일은 투자왕 김단테' 인터뷰 2부작의 풀버전입니다. 시청에 참고 바랍니다.\n\n#ai #챗gpt #아스트라 #제미나이 #클로드 #그록 #아마존 #월마트 #쿠팡", "\"메타 구글이 싸우는 동안 누가 돈을 벌까?\"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]", 2889, false, "UQH8C5tAN8c", "https://www.youtube.com/watch?v=UQH8C5tAN8c", "/downloads/이효석아카데미/2026-10-09 "메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상]/"메타 구글이 싸우는 동안 누가 돈을 벌까?"...AI 비서 뒤에 숨은 반도체 수요 | 김단테 [풀영상] [UQH8C5tAN8c].mp4", false, 7, ~U[2026-10-09 04:00:28Z]] 03:06:56.882 [debug] QUERY OK source="sources" db=1.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.890 [debug] QUERY OK source="media_items" db=7.3ms idle=12.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-09 00:05:10Z], 7] 03:06:56.891 [debug] QUERY OK source="media_items" db=0.5ms idle=18.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", "ca488db9-6602-4683-ac04-7c1da2c17c95", false, 735, false, "kiDCF84SER0", "https://www.youtube.com/watch?v=kiDCF84SER0", 14, "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", false, false, 7, [], 97, ~U[2026-10-09 00:05:10Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📌 전체 영상을 보고 싶으시다면?\n👉https://naver.me/Ge7OKHRH", "[속보효] OpenAI 매출 충격, 신호인가? 소음인가?", 735, false, "kiDCF84SER0", "https://www.youtube.com/watch?v=kiDCF84SER0", "/downloads/이효석아카데미/2026-10-09 [속보효] OpenAI 매출 충격, 신호인가? 소음인가?/[속보효] OpenAI 매출 충격, 신호인가? 소음인가? [kiDCF84SER0].mp4", false, 7, ~U[2026-10-09 00:05:10Z]] 03:06:56.892 [debug] QUERY OK source="sources" db=0.9ms idle=12.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.900 [debug] QUERY OK source="media_items" db=7.6ms idle=11.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 08:00:38Z], 7] 03:06:56.901 [debug] QUERY OK source="media_items" db=0.9ms idle=18.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", "ccd01c50-d882-4446-bbb7-d4978331f031", false, 2941, false, "Wd2F-sEasVw", "https://www.youtube.com/watch?v=Wd2F-sEasVw", 15, "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", false, false, 7, [], 98, ~U[2026-10-07 08:00:38Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 테크피드 작가님의 신간 [미래를 바꿀 7개의 메가트렌드에 올라타라]\n도서 증정 이벤트를 진행합니다. 많은 참여 부탁드립니다.\n\n⭐️ 도서이벤트 참여하기 : https://forms.gle/sC7ggxHanAEU9q9VA\n■ 응모방법 : 먼저 유튜브 영상 댓글에 도서 기대평 작성 후 → 응모 설문 제출\n■ 응모기간 : 10월 1일(목) ~ 10월 7일(수)\n■ 당첨발표 : 10월 8일(목)\n■ 당첨인원 : 30명\n\n🔗 도서 구매 링크\n👉 https://aladin.kr/p/ASOGy\n\n🔥 화끈한 미국주식 인사이트가 궁금하시다면? \"테크피드\"\n👉 https://www.youtube.com/ \u2068@t3chfeed\u2069 \n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테크피드의 미국주식 인사이트\n[1부] https://youtu.be/HLYHxFcBqcQ \n[2부] https://youtu.be/PiV0NE7Mcc4\n\n🗓️ 촬영일 : 9.29\n\n#바이오 #ai바이오 #바이오주 #ai 미국주식 #ai주식 #빅테크 #비트코인 #트럼프 #반도체", "버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]", 2941, false, "Wd2F-sEasVw", "https://www.youtube.com/watch?v=Wd2F-sEasVw", "/downloads/이효석아카데미/2026-10-07 버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상]/버블이 온다는 걸 알면서도 엔비디아·테슬라·팔란티어를 들고 가는 이유ㅣ테크피드 [풀영상] [Wd2F-sEasVw].mp4", false, 7, ~U[2026-10-07 08:00:38Z]] 03:06:56.902 [debug] QUERY OK source="sources" db=1.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.909 [debug] QUERY OK source="media_items" db=6.7ms idle=11.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 09:00:17Z], 7] 03:06:56.911 [debug] QUERY OK source="media_items" db=0.7ms idle=17.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", "f88a721d-bd49-4916-94e9-e8b0a89ced68", false, 1647, false, "ZndXfOdGgkI", "https://www.youtube.com/watch?v=ZndXfOdGgkI", 16, "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", false, false, 7, [], 97, ~U[2026-10-06 09:00:17Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]", 1647, false, "ZndXfOdGgkI", "https://www.youtube.com/watch?v=ZndXfOdGgkI", "/downloads/이효석아카데미/2026-10-06 테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부]/테슬라 차 한 대가 스스로 돈을 벌어온다면, 자동차를 바라보는 기준이 완전히 달라질 수 있습니다ㅣ박형근 실장 [2부] [ZndXfOdGgkI].mp4", false, 7, ~U[2026-10-06 09:00:17Z]] 03:06:56.912 [debug] QUERY OK source="sources" db=0.9ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.919 [debug] QUERY OK source="media_items" db=6.7ms idle=10.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 08:00:09Z], 7] 03:06:56.920 [debug] QUERY OK source="media_items" db=0.8ms idle=16.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", "619b6d6f-7624-4c2f-9431-35203d5978ac", false, 1649, false, "axhb9H_ic3I", "https://www.youtube.com/watch?v=axhb9H_ic3I", 17, "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", false, false, 7, [], 97, ~U[2026-10-06 08:00:09Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 테슬라 삼촌 박형근 실장님의 신간 [테슬라 딥다이브]가 출간되었습니다.\n가까운 서점과 인터넷에서 만나보세요\n👉 https://aladin.kr/p/uScJq\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n테슬라 삼촌 박형근 실장의 테슬라 이야기\n[1부] https://youtu.be/axhb9H_ic3I\n[2부] https://youtu.be/ZndXfOdGgkI\n\n🗓️ 촬영일 : 10.01\n\n#테슬라 #일론머스크 #사이버캡 #로보택시 #옵티머스 #스페이스x", "테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]", 1649, false, "axhb9H_ic3I", "https://www.youtube.com/watch?v=axhb9H_ic3I", "/downloads/이효석아카데미/2026-10-06 테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부]/테슬라가 사이버캡을 빠르게 찍어내려는 이유, 생산량을 늘리는 것보다 어려운 문제가 있습니다ㅣ박형근 HMG 경영연구원 실장 [1부] [axhb9H_ic3I].mp4", false, 7, ~U[2026-10-06 08:00:09Z]] 03:06:56.921 [debug] QUERY OK source="sources" db=0.8ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.928 [debug] QUERY OK source="media_items" db=6.7ms idle=11.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-05 23:49:04Z], 7] 03:06:56.930 [debug] QUERY OK source="media_items" db=0.5ms idle=17.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", "66abbbab-8b4f-4ebd-be8e-d812d9bde2ff", false, 519, false, "dgKLdPKNgB0", "https://www.youtube.com/watch?v=dgKLdPKNgB0", 18, "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", false, false, 7, [], 98, ~U[2026-10-05 23:49:04Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "엔비디아 분석 자료를 보고 싶으시다면? https://naver.me/FJOYF5d2", "[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??", 519, false, "dgKLdPKNgB0", "https://www.youtube.com/watch?v=dgKLdPKNgB0", "/downloads/이효석아카데미/2026-10-05 [속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지??/[속보효] 나스닥, 엔비디아 신고가!!! 무슨 일이지?? [dgKLdPKNgB0].mp4", false, 7, ~U[2026-10-05 23:49:04Z]] 03:06:56.931 [debug] QUERY OK source="sources" db=0.9ms idle=10.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] 03:06:56.938 [debug] QUERY OK source="media_items" db=7.2ms idle=10.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 08:00:17Z], 7] 03:06:56.939 [debug] QUERY OK source="media_items" db=0.7ms idle=17.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", "8682a23b-1631-4c80-a12b-9e1491cd2fc2", false, 680, false, "XIEitZGI4dg", "https://www.youtube.com/watch?v=XIEitZGI4dg", 19, "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", false, false, 7, [], 97, ~U[2026-10-04 08:00:17Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "♥️『이효석의 21세기 투자법』을 읽고 독서 후기를 남겨주세요! \n👉 이벤트 응모하기 : https://21st-century-investing.pplx.app\n📅 후기 이벤트 기간 : 10월 4일 (일) ~ 10/18(일) \n📅 당첨자 발표 : 10/21(수)\n🎁 당첨자 선물 : AirPods 5(1명) · 인테그리티 수건 세트(50명)\n\n※ 블로그에 글을 올린 뒤, 반드시 이벤트 페이지에서 응모까지 완료해주세요.\n※ 후기 글은 전체공개로 유지해주셔야해요~. 자세한 사항은 이벤트 페이지에서 확인하실 수 있습니다.\n여러분의 이야기를 기다리겠습니다. 감사합니다! \n\nㅡ\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#이효석의21세기투자법 #투자철학 #투자전략 #투자기준 #투자실수 #ai", "\"이익 난 종목을 얼마나 오래 안 파느냐\" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준", 680, false, "XIEitZGI4dg", "https://www.youtube.com/watch?v=XIEitZGI4dg", "/downloads/이효석아카데미/2026-10-04 "이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준/"이익 난 종목을 얼마나 오래 안 파느냐" 이효석이 3년 전 만난 주식시장 절대 고수가 진짜와 가짜를 가른 단 하나의 기준 [XIEitZGI4dg].mp4", false, 7, ~U[2026-10-04 08:00:17Z]] 03:06:56.940 [debug] QUERY OK source="sources" db=0.7ms idle=11.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.947 [debug] QUERY OK source="media_items" db=6.7ms idle=11.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-04 00:00:12Z], 7] 03:06:56.949 [debug] QUERY OK source="media_items" db=0.8ms idle=17.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", "8d19a574-e74c-43e3-815f-345e6b7a40d5", false, 1202, false, "f1Z6B9NRpNA", "https://www.youtube.com/watch?v=f1Z6B9NRpNA", 20, "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", false, false, 7, [], 97, ~U[2026-10-04 00:00:12Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "🤖 10월 월간 전략 세미나 보러가기 - AI 5단 투자법\n👉 https://naver.me/I5wadeOL\n\n📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.2\n\n#미국주식 #ai #gpu #cpu #intel #amd #hbm #semiconductor #openai #samaltman #markjukerberg #instinct #dot #muse #meta #gpt #ai #이효석 #이효석아카데미", "“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유", 1202, false, "f1Z6B9NRpNA", "https://www.youtube.com/watch?v=f1Z6B9NRpNA", "/downloads/이효석아카데미/2026-10-04 “누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유/“누가 이길까? 아니죠. 언제까지 싸울지가 중요합니다”…메타·구글·OpenAI가 싸울수록 전력·CPU·기판이 떼돈 버는 진짜 이유 [f1Z6B9NRpNA].mp4", false, 7, ~U[2026-10-04 00:00:12Z]] 03:06:56.950 [debug] QUERY OK source="sources" db=0.9ms idle=11.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:06:56.957 [debug] QUERY OK source="media_items" db=6.7ms idle=11.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-03 00:00:24Z], 7] 03:06:56.960 [debug] QUERY OK source="media_items" db=2.4ms idle=17.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", "8bd93259-3a42-4f0c-b1c5-fcd3cface2d1", false, 1202, false, "ALvXoiFY6zM", "https://www.youtube.com/watch?v=ALvXoiFY6zM", 21, "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", false, false, 7, [], 98, ~U[2026-10-03 00:00:24Z], ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], "📚 신간 '이효석의 21세기 투자법'\n👉 https://vo.la/NWrGHLm\n\n⭐️ 이효석 아카데미 공식 인스타그램\n👉 https://www.instagram.com/hslee7903/\n\n🔊 이효석 아카데미는 아래 링크에 소개된 공식 채널을 통해서만 여러분과 소통합니다.\n사칭 피해에 각별히 주의해주세요.\n👉🏻 https://linktr.ee/hsacademy_integrity\n\n🎓 [네프콘] 네이버 프리미엄콘텐츠 전체 1위 이효석 아카데미🥇\n바쁜 투자자를 위한 알짜배기 투자 정보 👉🏻 https://bit.ly/45jA33C\n\n✅ [텔레그램] 투자에 도움 되는 생생한 정보 체크 👉🏻 https://bit.ly/44YOM3Y\n✅ 비즈니스/광고/협업 문의 : contact@hs-academy.kr\n\n🗓️ 촬영일 : 10.01\n\n#환율 #달러 #엔화 #위안화 #원화 #원달러환율 #주식 #주식기초 #주린이 #재테크 #해외여행 #화전", "“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산", 1202, false, "ALvXoiFY6zM", "https://www.youtube.com/watch?v=ALvXoiFY6zM", "/downloads/이효석아카데미/2026-10-03 “오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산/“오늘 외국인이 많이 팔았습니다”…신문 1면 뒤에 숨은 금리·원달러·코스피의 진짜 계산 [ALvXoiFY6zM].mp4", false, 7, ~U[2026-10-03 00:00:24Z]] 03:06:56.962 [debug] QUERY OK source="sources" db=1.0ms idle=13.3ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z], 7] 03:06:56.968 [debug] QUERY OK source="media_items" db=6.2ms idle=13.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] 03:06:56.991 [debug] QUERY OK source="media_items" db=7.1ms idle=1.7ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 03:06:56.993 [debug] QUERY OK source="media_items" db=1.9ms idle=8.8ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 03:06:56.993 [info] No notification servers provided for source 7 03:06:56.995 [debug] QUERY OK source="tasks" db=1.0ms idle=10.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16364, 7, ~U[2026-10-18 03:06:56Z], ~U[2026-10-18 03:06:56Z]] 03:06:56.996 [info] {"args":{"id":7},"id":16332,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":36789828,"event":"job:stop","queue_time":451429,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:07:00.327 [info] {"source":"oban","duration":240,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:07:02.242 [info] GET /media/cb342240-3ac0-4e80-b6e2-dc3d06fa7a88/stream 03:07:02.242 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "cb342240-3ac0-4e80-b6e2-dc3d06fa7a88", "v" => "1792206236"} Pipelines: [:maybe_basic_auth] 03:07:02.242 [debug] QUERY OK source="media_items" db=0.2ms idle=1558.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["cb342240-3ac0-4e80-b6e2-dc3d06fa7a88"] 03:07:02.243 [debug] Invalid range request for media item: cb342240-3ac0-4e80-b6e2-dc3d06fa7a88 - serving full file 03:07:02.243 [info] Sent 200 in 920µs 03:07:09.176 [info] {"source":"oban","duration":1013,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:07:20.617 [info] GET /media/cbb0a9db-ca69-4b9a-acca-a94f5a463b7b/stream 03:07:20.618 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "cbb0a9db-ca69-4b9a-acca-a94f5a463b7b", "v" => "1792226299"} Pipelines: [:maybe_basic_auth] 03:07:20.618 [debug] QUERY OK source="media_items" db=0.2ms idle=1934.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["cbb0a9db-ca69-4b9a-acca-a94f5a463b7b"] 03:07:20.618 [debug] Invalid range request for media item: cbb0a9db-ca69-4b9a-acca-a94f5a463b7b - serving full file 03:07:20.618 [info] Sent 200 in 972µs 03:07:39.179 [info] {"source":"oban","duration":1138,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:07:51.058 [info] GET /media/a0be2c0b-de6f-46e4-8af5-6165dbdfa511/stream 03:07:51.058 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "a0be2c0b-de6f-46e4-8af5-6165dbdfa511", "v" => "1791770817"} Pipelines: [:maybe_basic_auth] 03:07:51.059 [debug] QUERY OK source="media_items" db=0.3ms idle=1351.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["a0be2c0b-de6f-46e4-8af5-6165dbdfa511"] 03:07:51.059 [debug] Invalid range request for media item: a0be2c0b-de6f-46e4-8af5-6165dbdfa511 - serving full file 03:07:51.059 [info] Sent 200 in 987µs 03:08:00.328 [info] {"source":"oban","duration":215,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:08:09.180 [info] {"source":"oban","duration":1063,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:08:21.107 [info] GET /media/4e3494b4-1cfb-482a-b0e1-f5ea5872c361/stream 03:08:21.108 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "4e3494b4-1cfb-482a-b0e1-f5ea5872c361", "v" => "1791856842"} Pipelines: [:maybe_basic_auth] 03:08:21.108 [debug] QUERY OK source="media_items" db=0.4ms idle=1154.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["4e3494b4-1cfb-482a-b0e1-f5ea5872c361"] 03:08:21.108 [debug] Invalid range request for media item: 4e3494b4-1cfb-482a-b0e1-f5ea5872c361 - serving full file 03:08:21.108 [info] Sent 200 in 1ms 03:08:39.182 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:08:51.133 [info] GET /media/bb92ecb0-8b63-4711-8901-d63fabb88f1e/stream 03:08:51.133 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "bb92ecb0-8b63-4711-8901-d63fabb88f1e", "v" => "1792206365"} Pipelines: [:maybe_basic_auth] 03:08:51.134 [debug] QUERY OK source="media_items" db=0.3ms idle=207.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["bb92ecb0-8b63-4711-8901-d63fabb88f1e"] 03:08:51.134 [debug] Invalid range request for media item: bb92ecb0-8b63-4711-8901-d63fabb88f1e - serving full file 03:08:51.134 [info] Sent 200 in 1ms 03:09:00.329 [info] {"source":"oban","duration":239,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:09:09.186 [info] {"source":"oban","duration":2911,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:09:28.522 [info] GET / 03:09:28.522 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:09:28.522 [debug] QUERY OK source="settings" db=0.1ms idle=1192.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:09:28.522 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1192.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:09:28.523 [debug] QUERY OK source="sources" db=0.1ms idle=1155.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:09:28.550 [debug] QUERY OK source="media_items" db=26.8ms idle=193.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:09:28.553 [debug] QUERY OK source="media_items" db=2.5ms idle=181.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:09:28.553 [debug] QUERY OK source="settings" db=0.1ms idle=30.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:09:28.553 [debug] QUERY OK source="settings" db=0.0ms idle=30.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:09:28.554 [debug] QUERY OK source="settings" db=0.0ms idle=30.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:09:28.554 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 03:09:28.555 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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)) [] 03:09:28.556 [debug] QUERY OK source="media_items" db=0.3ms idle=2.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:09:28.556 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:09:28.565 [debug] QUERY OK source="media_items" db=7.9ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:09:28.566 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=10.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] 03:09:28.566 [debug] QUERY OK source="sources" db=0.1ms 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 (?,?)) [7, 3] 03:09:28.568 [info] Sent 200 in 45ms 03:09:39.188 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:10:00.330 [info] {"source":"oban","duration":173,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:10:01.767 [info] GET / 03:10:01.767 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:10:01.768 [debug] QUERY OK source="settings" db=0.1ms idle=1437.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:10:01.768 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1438.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:10:01.768 [debug] QUERY OK source="sources" db=0.0ms idle=1438.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:10:01.776 [debug] QUERY OK source="media_items" db=8.0ms idle=1367.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:10:01.779 [debug] QUERY OK source="media_items" db=2.5ms idle=375.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:10:01.779 [debug] QUERY OK source="settings" db=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 [] 03:10:01.779 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:10:01.780 [debug] QUERY OK source="settings" db=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 [] 03:10:01.780 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 03:10:01.782 [debug] QUERY OK source="media_items" db=1.4ms idle=1.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)) [] 03:10:01.782 [debug] QUERY OK source="media_items" db=0.2ms idle=2.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:10:01.783 [debug] QUERY OK source="sources" db=0.1ms idle=3.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 (?,?)) [4, 7] 03:10:01.785 [debug] QUERY OK source="media_items" db=1.8ms idle=3.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"))) [] 03:10:01.786 [debug] QUERY OK source="media_items" db=1.0ms idle=4.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:10:01.787 [debug] QUERY OK source="sources" db=0.1ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:10:01.787 [info] Sent 200 in 20ms 03:10:09.189 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:10:09.580 [info] GET / 03:10:09.580 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:10:09.581 [debug] QUERY OK source="settings" db=0.1ms idle=391.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:10:09.581 [debug] QUERY OK source="media_profiles" db=0.0ms idle=251.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:10:09.581 [debug] QUERY OK source="sources" db=0.0ms idle=251.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:10:09.583 [debug] QUERY OK source="media_items" db=2.1ms idle=251.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:10:09.584 [debug] QUERY OK source="media_items" db=1.0ms idle=174.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:10:09.585 [debug] QUERY OK source="settings" db=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 [] 03:10:09.585 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:10:09.585 [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 [] 03:10:09.586 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 03:10:09.587 [debug] QUERY OK source="media_items" db=0.9ms idle=1.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)) [] 03:10:09.588 [debug] QUERY OK source="media_items" db=0.3ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:10:09.588 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:10:09.596 [debug] QUERY OK source="media_items" db=7.1ms idle=3.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"))) [] 03:10:09.597 [debug] QUERY OK source="media_items" db=1.0ms idle=9.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] 03:10:09.598 [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 (?,?)) [7, 3] 03:10:09.599 [info] Sent 200 in 18ms 03:10:33.151 [info] GET / 03:10:33.152 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:10:33.152 [debug] QUERY OK source="settings" db=0.4ms idle=1822.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:10:33.152 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1822.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:10:33.153 [debug] QUERY OK source="sources" db=0.0ms idle=1822.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:10:33.155 [debug] QUERY OK source="media_items" db=1.9ms idle=1721.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:10:33.157 [debug] QUERY OK source="media_items" db=1.9ms idle=722.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:10:33.157 [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 [] 03:10:33.157 [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 [] 03:10:33.158 [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 [] 03:10:33.158 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 03:10:33.160 [debug] QUERY OK source="media_items" db=1.3ms idle=2.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)) [] 03:10:33.160 [debug] QUERY OK source="media_items" db=0.2ms idle=3.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:10:33.161 [debug] QUERY OK source="sources" db=0.1ms idle=3.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 (?,?)) [4, 7] 03:10:33.164 [debug] QUERY OK source="media_items" db=1.9ms idle=3.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"))) [] 03:10:33.165 [debug] QUERY OK source="media_items" db=0.8ms idle=5.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:10:33.165 [debug] QUERY OK source="sources" db=0.2ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:10:33.166 [info] Sent 200 in 14ms 03:10:39.192 [info] {"source":"oban","duration":1269,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:11:00.331 [info] {"source":"oban","duration":169,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:11:09.193 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:11:39.194 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:11:50.680 [info] GET / 03:11:50.680 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:11:50.681 [debug] QUERY OK source="settings" db=0.1ms idle=351.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:11:50.681 [debug] QUERY OK source="media_profiles" db=0.0ms idle=351.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:11:50.681 [debug] QUERY OK source="sources" db=0.0ms idle=351.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:11:50.689 [debug] QUERY OK source="media_items" db=7.2ms idle=351.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:11:50.690 [debug] QUERY OK source="media_items" db=1.1ms idle=178.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:11:50.690 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:11:50.691 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:11:50.691 [debug] QUERY OK source="settings" db=0.1ms idle=9.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:11:50.691 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 03:11:50.693 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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)) [] 03:11:50.693 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:11:50.693 [debug] QUERY OK source="sources" db=0.0ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:11:50.696 [debug] QUERY OK source="media_items" db=1.9ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:11:50.697 [debug] QUERY OK source="media_items" db=0.9ms idle=4.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:11:50.697 [debug] QUERY OK source="sources" db=0.1ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:11:50.698 [info] Sent 200 in 17ms 03:12:00.332 [info] {"source":"oban","duration":150,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:12:05.817 [info] GET / 03:12:05.817 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:12:05.817 [debug] QUERY OK source="settings" db=0.1ms idle=1487.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:12:05.818 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1488.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:12:05.818 [debug] QUERY OK source="sources" db=0.0ms idle=1488.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:12:05.820 [debug] QUERY OK source="media_items" db=1.9ms idle=1293.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:12:05.821 [debug] QUERY OK source="media_items" db=1.0ms idle=294.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:12:05.821 [debug] QUERY OK source="settings" db=0.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 [] 03:12:05.822 [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 [] 03:12:05.822 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:12:05.823 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 03:12:05.825 [debug] QUERY OK source="media_items" db=1.4ms idle=2.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)) [] 03:12:05.825 [debug] QUERY OK source="media_items" db=0.3ms idle=3.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] 03:12:05.826 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?)) [4, 7] 03:12:05.829 [debug] QUERY OK source="media_items" db=2.3ms idle=4.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"))) [] 03:12:05.830 [debug] QUERY OK source="media_items" db=1.0ms idle=6.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] 03:12:05.831 [debug] QUERY OK source="sources" db=0.1ms idle=5.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 (?,?)) [7, 3] 03:12:05.832 [info] Sent 200 in 14ms 03:12:09.195 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:12:39.196 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:13:00.333 [info] {"source":"oban","duration":168,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:13:09.197 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:13:14.871 [info] GET / 03:13:14.871 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:13:14.872 [debug] QUERY OK source="settings" db=0.1ms idle=542.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:13:14.872 [debug] QUERY OK source="media_profiles" db=0.0ms idle=542.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:13:14.872 [debug] QUERY OK source="sources" db=0.0ms idle=542.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:13:14.874 [debug] QUERY OK source="media_items" db=1.7ms idle=542.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:13:14.875 [debug] QUERY OK source="media_items" db=0.8ms idle=278.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:13:14.875 [debug] QUERY OK source="settings" db=0.0ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:13:14.875 [debug] QUERY OK source="settings" db=0.0ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:13:14.876 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:13:14.876 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 03:13:14.877 [debug] QUERY OK source="media_items" db=0.7ms idle=1.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)) [] 03:13:14.877 [debug] QUERY OK source="media_items" db=0.2ms idle=2.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:13:14.878 [debug] QUERY OK source="sources" db=0.1ms idle=2.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 (?,?)) [4, 7] 03:13:14.880 [debug] QUERY OK source="media_items" db=1.9ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:13:14.881 [debug] QUERY OK source="media_items" db=0.8ms idle=4.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:13:14.882 [debug] QUERY OK source="sources" db=0.1ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:13:14.883 [info] Sent 200 in 11ms 03:13:39.198 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:14:00.334 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:14:09.200 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:14:39.202 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:15:00.335 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:15:09.204 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:15:39.206 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:16:00.336 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:16:09.209 [info] {"source":"oban","duration":1145,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:16:39.210 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:17:00.337 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:17:08.147 [info] GET / 03:17:08.147 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:17:08.147 [debug] QUERY OK source="settings" db=0.3ms idle=1817.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:17:08.148 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1818.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:17:08.148 [debug] QUERY OK source="sources" db=0.0ms idle=1818.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:17:08.150 [debug] QUERY OK source="media_items" db=2.2ms idle=1317.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:17:08.152 [debug] QUERY OK source="media_items" db=2.1ms idle=319.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:17:08.153 [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 [] 03:17:08.153 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:17:08.153 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:17:08.154 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 03:17:08.156 [debug] QUERY OK source="media_items" db=1.3ms idle=1.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)) [] 03:17:08.156 [debug] QUERY OK source="media_items" db=0.4ms idle=2.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] 03:17:08.157 [debug] QUERY OK source="sources" db=0.4ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:17:08.160 [debug] QUERY OK source="media_items" db=1.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:17:08.161 [debug] QUERY OK source="media_items" db=0.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:17:08.161 [debug] QUERY OK source="sources" db=0.1ms idle=5.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:17:08.162 [info] Sent 200 in 15ms 03:17:09.211 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:17:39.213 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:18:00.338 [info] {"source":"oban","duration":256,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:18:09.215 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:18:32.927 [info] {"args":{"id":6},"id":16333,"meta":{},"system_time":1792293512927625601,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:18:32.928 [debug] QUERY OK source="sources" db=0.9ms idle=597.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] 03:18:32.930 [debug] QUERY OK source="settings" db=1.0ms idle=599.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:18:32.931 [debug] QUERY OK source="media_items" db=1.1ms idle=600.3ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 03:18:32.932 [debug] QUERY OK source="media_items" db=1.2ms idle=11.5ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 03:18:32.933 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:18:32.933 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:18:32.933 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:18:33.094 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 03:18:33.094 [debug] Current batch of media processed. Will check again in 1000ms 03:18:33.094 [debug] QUERY OK source="settings" db=0.1ms idle=163.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:18:33.095 [debug] QUERY OK source="settings" db=0.1ms idle=162.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:18:33.095 [debug] QUERY OK source="settings" db=0.1ms idle=162.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:18:33.095 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLNmdSYZfFnFYr_ZvC8YCnXM5wVZ5i7NjV&si=tpPXEtloWo6vqo3h --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/포모의 HTS 로그인2/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+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/98/7c/987c7004491017d0b7d698a95ee7379d5b33707227be94f9df002774a7d62e01.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 03:18:34.094 [debug] Current batch of media processed. Will check again in 1000ms 03:18:35.095 [debug] Current batch of media processed. Will check again in 1000ms 03:18:36.096 [debug] Current batch of media processed. Will check again in 1000ms 03:18:37.098 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1655, "filename" => "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", "id" => "niaLYJRZ7rA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=niaLYJRZ7rA", "playlist_index" => 1, "timestamp" => 1790326820, "title" => "내 종목만 안 오르는 진짜 이유를 찾자!", "upload_date" => "20260925"} 03:18:37.099 [debug] QUERY OK source="sources" db=0.3ms idle=768.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:37.099 [debug] QUERY OK source="sources" db=0.1ms idle=769.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] 03:18:37.099 [debug] QUERY OK source="media_items" db=0.3ms idle=769.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-25 09:00:20Z], 6] 03:18:37.101 [debug] QUERY OK source="media_items" db=1.2ms idle=770.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "내 종목만 안 오르는 진짜 이유를 찾자!", "aaa12cf9-9ec7-4adc-81d8-0ebe3ff4b929", false, 1655, false, "niaLYJRZ7rA", "https://www.youtube.com/watch?v=niaLYJRZ7rA", 1, "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", false, false, 6, [], 1, ~U[2026-09-25 09:00:20Z], ~U[2026-10-18 03:18:37Z], ~U[2026-10-18 03:18:37Z], "#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "내 종목만 안 오르는 진짜 이유를 찾자!", 1655, false, "niaLYJRZ7rA", "https://www.youtube.com/watch?v=niaLYJRZ7rA", "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", false, 6, ~U[2026-09-25 09:00:20Z]] 03:18:37.101 [debug] QUERY OK source="sources" db=0.1ms idle=177.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:37.101 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:37.102 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [45563] 03:18:37.102 [debug] Current batch of media processed. Will check again in 1000ms 03:18:38.102 [debug] Current batch of media processed. Will check again in 1000ms 03:18:39.104 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2954, "filename" => "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", "id" => "4nSxuddnkXk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4nSxuddnkXk", "playlist_index" => 2, "timestamp" => 1789117227, "title" => "조건검색식, 기초부터 실전 매매 세팅까지!", "upload_date" => "20260911"} 03:18:39.104 [debug] QUERY OK source="sources" db=0.3ms idle=774.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:39.105 [debug] QUERY OK source="sources" db=0.0ms idle=775.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] 03:18:39.105 [debug] QUERY OK source="media_items" db=0.3ms idle=775.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-11 09:00:27Z], 6] 03:18:39.107 [debug] QUERY OK source="media_items" db=1.0ms idle=775.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "조건검색식, 기초부터 실전 매매 세팅까지!", "855e0e1b-1eb1-4e83-884b-6f28d45d411d", false, 2954, false, "4nSxuddnkXk", "https://www.youtube.com/watch?v=4nSxuddnkXk", 2, "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", false, false, 6, [], 1, ~U[2026-09-11 09:00:27Z], ~U[2026-10-18 03:18:39Z], ~U[2026-10-18 03:18:39Z], "#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "조건검색식, 기초부터 실전 매매 세팅까지!", 2954, false, "4nSxuddnkXk", "https://www.youtube.com/watch?v=4nSxuddnkXk", "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", false, 6, ~U[2026-09-11 09:00:27Z]] 03:18:39.107 [debug] QUERY OK source="sources" db=0.1ms idle=180.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:39.107 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:39.108 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [43121] 03:18:39.108 [debug] Current batch of media processed. Will check again in 1000ms 03:18:39.217 [info] {"source":"oban","duration":1115,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:18:40.109 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 3091, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", "id" => "du0PkCrFwgY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=du0PkCrFwgY", "playlist_index" => 3, "timestamp" => 1787907637, "title" => "기초부터 복습까지! HTS 수식관리자 총정리", "upload_date" => "20260828"} 03:18:40.110 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1002.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:40.110 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:18:40.111 [debug] QUERY OK source="media_items" db=0.2ms idle=1002.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-28 09:00:37Z], 6] 03:18:40.112 [debug] QUERY OK source="media_items" db=0.9ms idle=893.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "기초부터 복습까지! HTS 수식관리자 총정리", "9c972b4b-46c5-4f16-bb1d-cf539b79e1d8", false, 3091, false, "du0PkCrFwgY", "https://www.youtube.com/watch?v=du0PkCrFwgY", 3, "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", false, false, 6, [], 1, ~U[2026-08-28 09:00:37Z], ~U[2026-10-18 03:18:40Z], ~U[2026-10-18 03:18:40Z], "#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "기초부터 복습까지! HTS 수식관리자 총정리", 3091, false, "du0PkCrFwgY", "https://www.youtube.com/watch?v=du0PkCrFwgY", "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", false, 6, ~U[2026-08-28 09:00:37Z]] 03:18:40.112 [debug] QUERY OK source="sources" db=0.1ms idle=184.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" = ?) [6] 03:18:40.112 [debug] QUERY OK source="media_profiles" db=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] 03:18:40.113 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [42075] 03:18:40.113 [debug] Current batch of media processed. Will check again in 1000ms 03:18:41.113 [debug] Current batch of media processed. Will check again in 1000ms 03:18:42.115 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2061, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", "id" => "1crrXULrqyk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=1crrXULrqyk", "playlist_index" => 4, "timestamp" => 1787472011, "title" => "돈 들어오는 구간 찾는 방법!", "upload_date" => "20260823"} 03:18:42.115 [debug] QUERY OK source="sources" db=0.2ms idle=785.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:42.116 [debug] QUERY OK source="sources" db=0.1ms idle=786.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] 03:18:42.116 [debug] QUERY OK source="media_items" db=0.2ms idle=786.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-23 08:00:11Z], 6] 03:18:42.166 [debug] QUERY OK source="media_items" db=49.1ms idle=786.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "돈 들어오는 구간 찾는 방법!", "808314ff-7063-477d-a7aa-8ca5d4c4d07c", false, 2061, false, "1crrXULrqyk", "https://www.youtube.com/watch?v=1crrXULrqyk", 4, "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", false, false, 6, [], 1, ~U[2026-08-23 08:00:11Z], ~U[2026-10-18 03:18:42Z], ~U[2026-10-18 03:18:42Z], "#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "돈 들어오는 구간 찾는 방법!", 2061, false, "1crrXULrqyk", "https://www.youtube.com/watch?v=1crrXULrqyk", "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", false, 6, ~U[2026-08-23 08:00:11Z]] 03:18:42.166 [debug] QUERY OK source="sources" db=0.3ms idle=236.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" = ?) [6] 03:18:42.167 [debug] QUERY OK source="media_profiles" db=0.2ms idle=51.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] 03:18:42.167 [debug] QUERY OK source="media_items" db=0.1ms idle=51.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [42078] 03:18:42.167 [debug] Current batch of media processed. Will check again in 1000ms 03:18:43.168 [debug] Current batch of media processed. Will check again in 1000ms 03:18:44.170 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1519, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", "id" => "xJ7md1FoEBY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xJ7md1FoEBY", "playlist_index" => 5, "timestamp" => 1787385637, "title" => "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", "upload_date" => "20260822"} 03:18:44.170 [debug] QUERY OK source="sources" db=0.1ms idle=840.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:44.171 [debug] QUERY OK source="sources" db=0.1ms idle=841.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] 03:18:44.171 [debug] QUERY OK source="media_items" db=0.2ms idle=841.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-22 08:00:37Z], 6] 03:18:44.185 [debug] QUERY OK source="media_items" db=13.2ms idle=841.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", "4ffa221c-1850-4d40-acfd-3caaec5a37b3", false, 1519, false, "xJ7md1FoEBY", "https://www.youtube.com/watch?v=xJ7md1FoEBY", 5, "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", false, false, 6, [], 1, ~U[2026-08-22 08:00:37Z], ~U[2026-10-18 03:18:44Z], ~U[2026-10-18 03:18:44Z], "#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", 1519, false, "xJ7md1FoEBY", "https://www.youtube.com/watch?v=xJ7md1FoEBY", "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", false, 6, ~U[2026-08-22 08:00:37Z]] 03:18:44.185 [debug] QUERY OK source="sources" db=0.1ms idle=254.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:44.186 [debug] QUERY OK source="media_profiles" db=0.1ms idle=15.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] 03:18:44.186 [debug] QUERY OK source="media_items" db=0.1ms idle=15.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [42080] 03:18:44.186 [debug] Current batch of media processed. Will check again in 1000ms 03:18:45.188 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2564, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", "id" => "OtMK7cTvUwI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OtMK7cTvUwI", "playlist_index" => 6, "timestamp" => 1787299238, "title" => "지수보다 강한 놈을 잡아 전략짜자!", "upload_date" => "20260821"} 03:18:45.189 [debug] QUERY OK source="sources" db=0.4ms idle=1003.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:45.189 [debug] QUERY OK source="sources" db=0.1ms idle=1003.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] 03:18:45.189 [debug] QUERY OK source="media_items" db=0.2ms idle=1003.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-21 08:00:38Z], 6] 03:18:45.667 [debug] QUERY OK source="media_items" db=477.4ms idle=1003.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "지수보다 강한 놈을 잡아 전략짜자!", "5e00c3c0-478f-466f-b075-20e95a8bd2cf", false, 2564, false, "OtMK7cTvUwI", "https://www.youtube.com/watch?v=OtMK7cTvUwI", 6, "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", false, false, 6, [], 1, ~U[2026-08-21 08:00:38Z], ~U[2026-10-18 03:18:45Z], ~U[2026-10-18 03:18:45Z], "#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "지수보다 강한 놈을 잡아 전략짜자!", 2564, false, "OtMK7cTvUwI", "https://www.youtube.com/watch?v=OtMK7cTvUwI", "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", false, 6, ~U[2026-08-21 08:00:38Z]] 03:18:45.668 [debug] QUERY OK source="sources" db=0.2ms idle=735.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" = ?) [6] 03:18:45.668 [debug] QUERY OK source="media_profiles" db=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] 03:18:45.669 [debug] QUERY OK source="media_items" db=0.1ms idle=479.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 [42082] 03:18:45.669 [debug] Current batch of media processed. Will check again in 1000ms 03:18:46.252 [info] GET / 03:18:46.253 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:18:46.253 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms 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 [] 03:18:46.253 [debug] QUERY OK source="media_profiles" db=0.1ms idle=585.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:18:46.254 [debug] QUERY OK source="sources" db=0.1ms idle=585.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:18:46.262 [debug] QUERY OK source="media_items" db=8.0ms idle=585.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:18:46.264 [debug] QUERY OK source="media_items" db=2.1ms idle=327.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:18:46.265 [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 [] 03:18:46.265 [debug] QUERY OK source="settings" db=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 [] 03:18:46.266 [debug] QUERY OK source="settings" db=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 [] 03:18:46.266 [debug] QUERY OK source="tasks" db=0.2ms idle=4.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"] 03:18:46.267 [debug] QUERY OK source="sources" db=0.2ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:46.269 [debug] QUERY OK source="media_items" db=2.0ms idle=2.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)) [] 03:18:46.270 [debug] QUERY OK source="media_items" db=0.3ms idle=4.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] 03:18:46.270 [debug] QUERY OK source="sources" db=0.1ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:18:46.273 [debug] QUERY OK source="media_items" db=2.0ms idle=4.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"))) [] 03:18:46.276 [debug] QUERY OK source="media_items" db=2.6ms idle=6.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:18:46.277 [debug] QUERY OK source="sources" db=0.2ms 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 (?,?)) [7, 3] 03:18:46.278 [info] Sent 200 in 25ms 03:18:46.670 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1887, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", "id" => "Y0QXcAemBJ4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Y0QXcAemBJ4", "playlist_index" => 7, "timestamp" => 1787212824, "title" => "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", "upload_date" => "20260820"} 03:18:46.670 [debug] QUERY OK source="sources" db=0.2ms idle=400.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:46.671 [debug] QUERY OK source="sources" db=0.0ms idle=400.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] 03:18:46.671 [debug] QUERY OK source="media_items" db=0.1ms idle=397.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-20 08:00:24Z], 6] 03:18:46.759 [debug] QUERY OK source="media_items" db=87.9ms idle=395.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", "b9c3a24c-a510-4a29-ba67-d3f16344b988", false, 1887, false, "Y0QXcAemBJ4", "https://www.youtube.com/watch?v=Y0QXcAemBJ4", 7, "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", false, false, 6, [], 1, ~U[2026-08-20 08:00:24Z], ~U[2026-10-18 03:18:46Z], ~U[2026-10-18 03:18:46Z], "#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", 1887, false, "Y0QXcAemBJ4", "https://www.youtube.com/watch?v=Y0QXcAemBJ4", "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", false, 6, ~U[2026-08-20 08:00:24Z]] 03:18:46.760 [debug] QUERY OK source="sources" db=0.7ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:46.761 [debug] QUERY OK source="media_profiles" db=0.1ms idle=90.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] 03:18:46.761 [debug] QUERY OK source="media_items" db=0.1ms idle=90.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 [42084] 03:18:46.761 [debug] Current batch of media processed. Will check again in 1000ms 03:18:47.763 [debug] Current batch of media processed. Will check again in 1000ms 03:18:48.764 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1448, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", "id" => "VzxZsZLorcg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=VzxZsZLorcg", "playlist_index" => 8, "timestamp" => 1787126438, "title" => "복잡한 수급 데이터 이 화면 하나로 끝!", "upload_date" => "20260819"} 03:18:48.765 [debug] QUERY OK source="sources" db=0.2ms idle=826.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:48.765 [debug] QUERY OK source="sources" db=0.1ms idle=435.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] 03:18:48.766 [debug] QUERY OK source="media_items" db=0.3ms idle=435.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-19 08:00:38Z], 6] 03:18:48.767 [debug] QUERY OK source="media_items" db=0.9ms idle=436.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "복잡한 수급 데이터 이 화면 하나로 끝!", "df022a43-efe4-40f0-aeca-576633d95781", false, 1448, false, "VzxZsZLorcg", "https://www.youtube.com/watch?v=VzxZsZLorcg", 8, "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", false, false, 6, [], 1, ~U[2026-08-19 08:00:38Z], ~U[2026-10-18 03:18:48Z], ~U[2026-10-18 03:18:48Z], "#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "복잡한 수급 데이터 이 화면 하나로 끝!", 1448, false, "VzxZsZLorcg", "https://www.youtube.com/watch?v=VzxZsZLorcg", "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", false, 6, ~U[2026-08-19 08:00:38Z]] 03:18:48.767 [debug] QUERY OK source="sources" db=0.1ms idle=437.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:48.768 [debug] QUERY OK source="media_profiles" db=0.5ms 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] 03:18:48.768 [debug] QUERY OK source="media_items" db=0.1ms 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 [42086] 03:18:48.768 [debug] Current batch of media processed. Will check again in 1000ms 03:18:49.770 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2108, "filename" => "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", "id" => "CWAN_vfIkA4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CWAN_vfIkA4", "playlist_index" => 9, "timestamp" => 1787040035, "title" => "패닉 셀 하기 전 반드시 확인해야 할 것", "upload_date" => "20260818"} 03:18:49.770 [debug] QUERY OK source="sources" db=0.2ms idle=1003.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:49.771 [debug] QUERY OK source="sources" db=0.3ms idle=1003.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] 03:18:49.771 [debug] QUERY OK source="media_items" db=0.3ms idle=1003.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-18 08:00:35Z], 6] 03:18:49.774 [debug] QUERY OK source="media_items" db=2.0ms idle=1003.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "패닉 셀 하기 전 반드시 확인해야 할 것", "ff046705-6643-4075-82c2-2aca34a5f187", false, 2108, false, "CWAN_vfIkA4", "https://www.youtube.com/watch?v=CWAN_vfIkA4", 9, "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", false, false, 6, [], 1, ~U[2026-08-18 08:00:35Z], ~U[2026-10-18 03:18:49Z], ~U[2026-10-18 03:18:49Z], "#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "패닉 셀 하기 전 반드시 확인해야 할 것", 2108, false, "CWAN_vfIkA4", "https://www.youtube.com/watch?v=CWAN_vfIkA4", "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", false, 6, ~U[2026-08-18 08:00:35Z]] 03:18:49.774 [debug] QUERY OK source="sources" db=0.1ms idle=835.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" = ?) [6] 03:18:49.775 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:49.775 [debug] QUERY OK source="media_items" db=0.1ms idle=3.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 [42088] 03:18:49.775 [debug] Current batch of media processed. Will check again in 1000ms 03:18:50.775 [debug] Current batch of media processed. Will check again in 1000ms 03:18:51.777 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2653, "filename" => "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", "id" => "F_urGvb5_RU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=F_urGvb5_RU", "playlist_index" => 10, "timestamp" => 1785488431, "title" => "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", "upload_date" => "20260731"} 03:18:51.777 [debug] QUERY OK source="sources" db=0.2ms idle=835.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:51.778 [debug] QUERY OK source="sources" db=0.0ms idle=448.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] 03:18:51.778 [debug] QUERY OK source="media_items" db=0.3ms idle=448.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-31 09:00:31Z], 6] 03:18:51.780 [debug] QUERY OK source="media_items" db=1.0ms idle=448.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", "dafc8f59-9756-4652-9795-81696c0f99ff", false, 2653, false, "F_urGvb5_RU", "https://www.youtube.com/watch?v=F_urGvb5_RU", 10, "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", false, false, 6, [], 1, ~U[2026-07-31 09:00:31Z], ~U[2026-10-18 03:18:51Z], ~U[2026-10-18 03:18:51Z], "#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", 2653, false, "F_urGvb5_RU", "https://www.youtube.com/watch?v=F_urGvb5_RU", "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", false, 6, ~U[2026-07-31 09:00:31Z]] 03:18:51.780 [debug] QUERY OK source="sources" db=0.1ms idle=450.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:51.780 [debug] QUERY OK source="media_profiles" db=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] 03:18:51.780 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [42089] 03:18:51.780 [debug] Current batch of media processed. Will check again in 1000ms 03:18:52.781 [debug] Current batch of media processed. Will check again in 1000ms 03:18:53.783 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "duration" => 2077, "filename" => "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", "id" => "gZTpk4n_PDw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gZTpk4n_PDw", "playlist_index" => 11, "timestamp" => 1784278830, "title" => "시장이 힘들 때 대비하는 전략", "upload_date" => "20260717"} 03:18:53.783 [debug] QUERY OK source="sources" db=0.3ms idle=839.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:53.784 [debug] QUERY OK source="sources" db=0.1ms idle=454.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] 03:18:53.784 [debug] QUERY OK source="media_items" db=0.3ms idle=454.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-17 09:00:30Z], 6] 03:18:53.786 [debug] QUERY OK source="media_items" db=1.0ms idle=454.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "시장이 힘들 때 대비하는 전략", "cd3bfb6f-286e-4407-85f9-4eeb87e7bbda", false, 2077, false, "gZTpk4n_PDw", "https://www.youtube.com/watch?v=gZTpk4n_PDw", 11, "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", false, false, 6, [], 1, ~U[2026-07-17 09:00:30Z], ~U[2026-10-18 03:18:53Z], ~U[2026-10-18 03:18:53Z], "#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "시장이 힘들 때 대비하는 전략", 2077, false, "gZTpk4n_PDw", "https://www.youtube.com/watch?v=gZTpk4n_PDw", "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", false, 6, ~U[2026-07-17 09:00:30Z]] 03:18:53.786 [debug] QUERY OK source="sources" db=0.1ms idle=456.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" = ?) [6] 03:18:53.786 [debug] QUERY OK source="media_profiles" db=0.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] 03:18:53.787 [debug] QUERY OK source="media_items" db=0.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 [37711] 03:18:53.787 [debug] Current batch of media processed. Will check again in 1000ms 03:18:54.788 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 1296, "filename" => "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", "id" => "tJDQVqRzklM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=tJDQVqRzklM", "playlist_index" => 12, "timestamp" => 1783069233, "title" => "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", "upload_date" => "20260703"} 03:18:54.788 [debug] QUERY OK source="sources" db=0.2ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:54.789 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:18:54.789 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-03 09:00:33Z], 6] 03:18:54.790 [debug] QUERY OK source="media_items" db=0.8ms idle=1002.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", "21550dc9-9a09-4449-8b7a-b988e0e14d93", false, 1296, false, "tJDQVqRzklM", "https://www.youtube.com/watch?v=tJDQVqRzklM", 12, "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", false, false, 6, [], 1, ~U[2026-07-03 09:00:33Z], ~U[2026-10-18 03:18:54Z], ~U[2026-10-18 03:18:54Z], "#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", 1296, false, "tJDQVqRzklM", "https://www.youtube.com/watch?v=tJDQVqRzklM", "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", false, 6, ~U[2026-07-03 09:00:33Z]] 03:18:54.791 [debug] QUERY OK source="sources" db=0.1ms idle=846.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" = ?) [6] 03:18:54.791 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:18:54.791 [debug] QUERY OK source="media_items" db=0.1ms 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 [37713] 03:18:54.791 [debug] Current batch of media processed. Will check again in 1000ms 03:18:55.793 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "duration" => 2386, "filename" => "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", "id" => "bb2pO2nGHf0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=bb2pO2nGHf0", "playlist_index" => 13, "timestamp" => 1780650026, "title" => "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", "upload_date" => "20260605"} 03:18:55.793 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:55.794 [debug] QUERY OK source="sources" db=0.1ms idle=1003.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] 03:18:55.794 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-05 09:00:26Z], 6] 03:18:55.796 [debug] QUERY OK source="media_items" db=0.9ms idle=1003.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", "8bdbd020-3a08-460c-9519-ad8ffdcd0fd0", false, 2386, false, "bb2pO2nGHf0", "https://www.youtube.com/watch?v=bb2pO2nGHf0", 13, "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", false, false, 6, [], 1, ~U[2026-06-05 09:00:26Z], ~U[2026-10-18 03:18:55Z], ~U[2026-10-18 03:18:55Z], "#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", 2386, false, "bb2pO2nGHf0", "https://www.youtube.com/watch?v=bb2pO2nGHf0", "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", false, 6, ~U[2026-06-05 09:00:26Z]] 03:18:55.796 [debug] QUERY OK source="sources" db=0.1ms idle=850.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" = ?) [6] 03:18:55.796 [debug] QUERY OK source="media_profiles" db=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] 03:18:55.796 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [29618] 03:18:55.797 [debug] Current batch of media processed. Will check again in 1000ms 03:18:56.797 [debug] Current batch of media processed. Will check again in 1000ms 03:18:57.799 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "duration" => 1391, "filename" => "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", "id" => "Eb02sSekWo8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Eb02sSekWo8", "playlist_index" => 14, "timestamp" => 1775206817, "title" => "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", "upload_date" => "20260403"} 03:18:57.799 [debug] QUERY OK source="sources" db=0.2ms idle=852.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:57.800 [debug] QUERY OK source="sources" db=0.0ms idle=470.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] 03:18:57.800 [debug] QUERY OK source="media_items" db=0.3ms idle=470.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-03 09:00:17Z], 6] 03:18:57.801 [debug] QUERY OK source="media_items" db=0.9ms idle=470.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", "c4b3a057-d63c-4c33-8f91-84df0d2b5f4c", false, 1391, false, "Eb02sSekWo8", "https://www.youtube.com/watch?v=Eb02sSekWo8", 14, "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", false, false, 6, [], 1, ~U[2026-04-03 09:00:17Z], ~U[2026-10-18 03:18:57Z], ~U[2026-10-18 03:18:57Z], "#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", 1391, false, "Eb02sSekWo8", "https://www.youtube.com/watch?v=Eb02sSekWo8", "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", false, 6, ~U[2026-04-03 09:00:17Z]] 03:18:57.802 [debug] QUERY OK source="sources" db=0.1ms idle=472.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" = ?) [6] 03:18:57.802 [debug] QUERY OK source="media_profiles" db=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] 03:18:57.802 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [20916] 03:18:57.802 [debug] Current batch of media processed. Will check again in 1000ms 03:18:58.804 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1459, "filename" => "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", "id" => "8EoH-ULFH50", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=8EoH-ULFH50", "playlist_index" => 15, "timestamp" => 1769763617, "title" => "저가 매수 타이밍을 알아보자!", "upload_date" => "20260130"} 03:18:58.804 [debug] QUERY OK source="sources" db=0.2ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:18:58.804 [debug] QUERY OK source="sources" db=0.1ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:18:58.805 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-30 09:00:17Z], 6] 03:18:58.806 [debug] QUERY OK source="media_items" db=0.7ms idle=1002.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "저가 매수 타이밍을 알아보자!", "51750514-9e2e-493c-9a55-2add892e073e", false, 1459, false, "8EoH-ULFH50", "https://www.youtube.com/watch?v=8EoH-ULFH50", 15, "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", false, false, 6, [], 1, ~U[2026-01-30 09:00:17Z], ~U[2026-10-18 03:18:58Z], ~U[2026-10-18 03:18:58Z], "#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "저가 매수 타이밍을 알아보자!", 1459, false, "8EoH-ULFH50", "https://www.youtube.com/watch?v=8EoH-ULFH50", "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", false, 6, ~U[2026-01-30 09:00:17Z]] 03:18:58.806 [debug] QUERY OK source="sources" db=0.1ms idle=857.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" = ?) [6] 03:18:58.806 [debug] QUERY OK source="media_profiles" db=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] 03:18:58.807 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16070] 03:18:58.807 [debug] Current batch of media processed. Will check again in 1000ms 03:18:59.807 [debug] Current batch of media processed. Will check again in 1000ms 03:19:00.339 [info] {"source":"oban","duration":183,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:19:00.809 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1203, "filename" => "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", "id" => "2mDQr3dUTCI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=2mDQr3dUTCI", "playlist_index" => 16, "timestamp" => 1768554006, "title" => "직장인 필수, 종가배팅이 답인 이유!", "upload_date" => "20260116"} 03:19:00.809 [debug] QUERY OK source="sources" db=0.2ms idle=479.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:00.810 [debug] QUERY OK source="sources" db=0.1ms idle=479.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] 03:19:00.810 [debug] QUERY OK source="media_items" db=0.3ms idle=480.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-16 09:00:06Z], 6] 03:19:00.811 [debug] QUERY OK source="media_items" db=1.0ms idle=480.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수, 종가배팅이 답인 이유!", "a3861c8e-c48f-4b2e-bd98-e8f992d4b712", false, 1203, false, "2mDQr3dUTCI", "https://www.youtube.com/watch?v=2mDQr3dUTCI", 16, "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", false, false, 6, [], 1, ~U[2026-01-16 09:00:06Z], ~U[2026-10-18 03:19:00Z], ~U[2026-10-18 03:19:00Z], "#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수, 종가배팅이 답인 이유!", 1203, false, "2mDQr3dUTCI", "https://www.youtube.com/watch?v=2mDQr3dUTCI", "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", false, 6, ~U[2026-01-16 09:00:06Z]] 03:19:00.812 [debug] QUERY OK source="sources" db=0.1ms idle=473.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" = ?) [6] 03:19:00.812 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:00.812 [debug] QUERY OK source="media_items" db=0.1ms 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 [16069] 03:19:00.812 [debug] Current batch of media processed. Will check again in 1000ms 03:19:01.814 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1124, "filename" => "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", "id" => "qwWeJE9Uzp4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=qwWeJE9Uzp4", "playlist_index" => 17, "timestamp" => 1767344485, "title" => "여러가지 조건을 동시에 만족하는 자동주문법", "upload_date" => "20260102"} 03:19:01.815 [debug] QUERY OK source="sources" db=0.3ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:01.815 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:19:01.815 [debug] QUERY OK source="media_items" db=0.3ms idle=1003.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-02 09:01:25Z], 6] 03:19:01.817 [debug] QUERY OK source="media_items" db=0.7ms idle=1003.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "여러가지 조건을 동시에 만족하는 자동주문법", "1bf61da0-2b05-4473-a85a-6233a0e85299", false, 1124, false, "qwWeJE9Uzp4", "https://www.youtube.com/watch?v=qwWeJE9Uzp4", 17, "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", false, false, 6, [], 1, ~U[2026-01-02 09:01:25Z], ~U[2026-10-18 03:19:01Z], ~U[2026-10-18 03:19:01Z], "#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "여러가지 조건을 동시에 만족하는 자동주문법", 1124, false, "qwWeJE9Uzp4", "https://www.youtube.com/watch?v=qwWeJE9Uzp4", "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", false, 6, ~U[2026-01-02 09:01:25Z]] 03:19:01.817 [debug] QUERY OK source="sources" db=0.1ms idle=865.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:01.817 [debug] QUERY OK source="media_profiles" db=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] 03:19:01.817 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [16068] 03:19:01.818 [debug] Current batch of media processed. Will check again in 1000ms 03:19:02.819 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #FV5LqyehGgM/youtube video #FV5LqyehGgM [FV5LqyehGgM].NA", "id" => "FV5LqyehGgM", "original_url" => "https://www.youtube.com/watch?v=FV5LqyehGgM", "playlist_index" => 18, "title" => "youtube video #FV5LqyehGgM"} 03:19:02.819 [debug] QUERY OK source="sources" db=0.1ms idle=1002.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:02.819 [debug] Current batch of media processed. Will check again in 1000ms 03:19:03.821 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #BsNuHOumSws/youtube video #BsNuHOumSws [BsNuHOumSws].NA", "id" => "BsNuHOumSws", "original_url" => "https://www.youtube.com/watch?v=BsNuHOumSws", "playlist_index" => 19, "title" => "youtube video #BsNuHOumSws"} 03:19:03.821 [debug] QUERY OK source="sources" db=0.1ms idle=1001.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:03.821 [debug] Current batch of media processed. Will check again in 1000ms 03:19:04.822 [debug] Current batch of media processed. Will check again in 1000ms 03:19:05.824 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1913, "filename" => "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", "id" => "C_UQnz3-1oM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=C_UQnz3-1oM", "playlist_index" => 20, "timestamp" => 1763110821, "title" => "오늘 급등하는 주도주로 트레이딩하자", "upload_date" => "20251114"} 03:19:05.824 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=868.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:05.825 [debug] QUERY OK source="sources" db=0.1ms idle=494.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] 03:19:05.825 [debug] QUERY OK source="media_items" db=0.4ms idle=495.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-14 09:00:21Z], 6] 03:19:05.826 [debug] QUERY OK source="media_items" db=0.6ms idle=496.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "오늘 급등하는 주도주로 트레이딩하자", "1cdcfcdc-826d-40a7-bdff-7084fd4834c0", false, 1913, false, "C_UQnz3-1oM", "https://www.youtube.com/watch?v=C_UQnz3-1oM", 20, "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", false, false, 6, [], 1, ~U[2025-11-14 09:00:21Z], ~U[2026-10-18 03:19:05Z], ~U[2026-10-18 03:19:05Z], "#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "오늘 급등하는 주도주로 트레이딩하자", 1913, false, "C_UQnz3-1oM", "https://www.youtube.com/watch?v=C_UQnz3-1oM", "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", false, 6, ~U[2025-11-14 09:00:21Z]] 03:19:05.827 [debug] QUERY OK source="sources" db=0.1ms idle=496.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" = ?) [6] 03:19:05.827 [debug] QUERY OK source="media_profiles" db=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] 03:19:05.827 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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 [16065] 03:19:05.827 [debug] Current batch of media processed. Will check again in 1000ms 03:19:06.829 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 2462, "filename" => "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", "id" => "1_2-VnhSwVg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=1_2-VnhSwVg", "playlist_index" => 21, "timestamp" => 1760691606, "title" => "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", "upload_date" => "20251017"} 03:19:06.829 [debug] QUERY OK source="sources" db=0.1ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:06.830 [debug] QUERY OK source="sources" db=0.0ms idle=1002.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] 03:19:06.830 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-17 09:00:06Z], 6] 03:19:06.831 [debug] QUERY OK source="media_items" db=0.6ms idle=1002.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", "287de332-5679-471e-a0c0-c03d40ac0c0b", false, 2462, false, "1_2-VnhSwVg", "https://www.youtube.com/watch?v=1_2-VnhSwVg", 21, "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", false, false, 6, [], 1, ~U[2025-10-17 09:00:06Z], ~U[2026-10-18 03:19:06Z], ~U[2026-10-18 03:19:06Z], "#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", 2462, false, "1_2-VnhSwVg", "https://www.youtube.com/watch?v=1_2-VnhSwVg", "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", false, 6, ~U[2025-10-17 09:00:06Z]] 03:19:06.831 [debug] QUERY OK source="sources" db=0.1ms idle=874.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" = ?) [6] 03:19:06.831 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:06.832 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16064] 03:19:06.832 [debug] Current batch of media processed. Will check again in 1000ms 03:19:07.832 [debug] Current batch of media processed. Will check again in 1000ms 03:19:08.834 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1963, "filename" => "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", "id" => "_OoTXq95EmU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_OoTXq95EmU", "playlist_index" => 22, "timestamp" => 1759482063, "title" => "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", "upload_date" => "20251003"} 03:19:08.834 [debug] QUERY OK source="sources" db=0.2ms idle=874.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:08.835 [debug] QUERY OK source="sources" db=0.0ms idle=505.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] 03:19:08.835 [debug] QUERY OK source="media_items" db=0.3ms idle=505.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-03 09:01:03Z], 6] 03:19:08.836 [debug] QUERY OK source="media_items" db=0.7ms idle=505.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", "716cad1f-1cdb-41e8-a23f-ab40ef149158", false, 1963, false, "_OoTXq95EmU", "https://www.youtube.com/watch?v=_OoTXq95EmU", 22, "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", false, false, 6, [], 1, ~U[2025-10-03 09:01:03Z], ~U[2026-10-18 03:19:08Z], ~U[2026-10-18 03:19:08Z], "#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", 1963, false, "_OoTXq95EmU", "https://www.youtube.com/watch?v=_OoTXq95EmU", "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", false, 6, ~U[2025-10-03 09:01:03Z]] 03:19:08.836 [debug] QUERY OK source="sources" db=0.0ms idle=506.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" = ?) [6] 03:19:08.837 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:08.837 [debug] QUERY OK source="media_items" db=0.2ms 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 [16063] 03:19:08.837 [debug] Current batch of media processed. Will check again in 1000ms 03:19:09.219 [info] {"source":"oban","duration":1005,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:19:09.838 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1715, "filename" => "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", "id" => "uEpQQiAI-xM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uEpQQiAI-xM", "playlist_index" => 23, "timestamp" => 1757667688, "title" => "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", "upload_date" => "20250912"} 03:19:09.838 [debug] QUERY OK source="sources" db=0.1ms idle=1001.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:09.839 [debug] QUERY OK source="sources" db=0.1ms idle=1001.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] 03:19:09.839 [debug] QUERY OK source="media_items" db=0.3ms idle=1001.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 09:01:28Z], 6] 03:19:09.840 [debug] QUERY OK source="media_items" db=0.5ms idle=879.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", "b7a44dcb-6980-4823-96f7-df4e05b1a2b1", false, 1715, false, "uEpQQiAI-xM", "https://www.youtube.com/watch?v=uEpQQiAI-xM", 23, "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", false, false, 6, [], 1, ~U[2025-09-12 09:01:28Z], ~U[2026-10-18 03:19:09Z], ~U[2026-10-18 03:19:09Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", 1715, false, "uEpQQiAI-xM", "https://www.youtube.com/watch?v=uEpQQiAI-xM", "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", false, 6, ~U[2025-09-12 09:01:28Z]] 03:19:09.840 [debug] QUERY OK source="sources" db=0.1ms idle=620.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" = ?) [6] 03:19:09.840 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:09.841 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16062] 03:19:09.841 [debug] Current batch of media processed. Will check again in 1000ms 03:19:10.846 [debug] Current batch of media processed. Will check again in 1000ms 03:19:11.847 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1827, "filename" => "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", "id" => "wbnk5XJUPAk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=wbnk5XJUPAk", "playlist_index" => 24, "timestamp" => 1754643700, "title" => "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", "upload_date" => "20250808"} 03:19:11.847 [debug] QUERY OK source="sources" db=0.1ms idle=885.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:11.848 [debug] QUERY OK source="sources" db=0.1ms idle=518.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] 03:19:11.848 [debug] QUERY OK source="media_items" db=0.3ms idle=518.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-08 09:01:40Z], 6] 03:19:11.849 [debug] QUERY OK source="media_items" db=0.7ms idle=518.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", "368a761d-9ece-44d5-94d4-29e7a78a19ce", false, 1827, false, "wbnk5XJUPAk", "https://www.youtube.com/watch?v=wbnk5XJUPAk", 24, "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", false, false, 6, [], 1, ~U[2025-08-08 09:01:40Z], ~U[2026-10-18 03:19:11Z], ~U[2026-10-18 03:19:11Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", 1827, false, "wbnk5XJUPAk", "https://www.youtube.com/watch?v=wbnk5XJUPAk", "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", false, 6, ~U[2025-08-08 09:01:40Z]] 03:19:11.850 [debug] QUERY OK source="sources" db=0.1ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:11.850 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:11.850 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16061] 03:19:11.850 [debug] Current batch of media processed. Will check again in 1000ms 03:19:12.851 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1750, "filename" => "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", "id" => "19LkkcdjqbY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=19LkkcdjqbY", "playlist_index" => 25, "timestamp" => 1752829206, "title" => "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", "upload_date" => "20250718"} 03:19:12.851 [debug] QUERY OK source="sources" db=0.1ms idle=1001.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:12.852 [debug] QUERY OK source="sources" db=0.0ms idle=1001.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] 03:19:12.852 [debug] QUERY OK source="media_items" db=0.2ms idle=1001.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-18 09:00:06Z], 6] 03:19:12.853 [debug] QUERY OK source="media_items" db=0.8ms idle=1002.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", "b497720e-2801-40f5-91ff-2da45b328dd6", false, 1750, false, "19LkkcdjqbY", "https://www.youtube.com/watch?v=19LkkcdjqbY", 25, "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", false, false, 6, [], 1, ~U[2025-07-18 09:00:06Z], ~U[2026-10-18 03:19:12Z], ~U[2026-10-18 03:19:12Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", 1750, false, "19LkkcdjqbY", "https://www.youtube.com/watch?v=19LkkcdjqbY", "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", false, 6, ~U[2025-07-18 09:00:06Z]] 03:19:12.853 [debug] QUERY OK source="sources" db=0.1ms idle=890.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" = ?) [6] 03:19:12.854 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:12.854 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16060] 03:19:12.854 [debug] Current batch of media processed. Will check again in 1000ms 03:19:13.854 [debug] Current batch of media processed. Will check again in 1000ms 03:19:14.856 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1848, "filename" => "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", "id" => "MMbBPNJuxqQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=MMbBPNJuxqQ", "playlist_index" => 26, "timestamp" => 1751619637, "title" => "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", "upload_date" => "20250704"} 03:19:14.856 [debug] QUERY OK source="sources" db=0.2ms idle=890.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:14.857 [debug] QUERY OK source="sources" db=0.0ms idle=527.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] 03:19:14.857 [debug] QUERY OK source="media_items" db=0.2ms idle=527.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-04 09:00:37Z], 6] 03:19:14.858 [debug] QUERY OK source="media_items" db=0.6ms idle=527.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", "d8bb18e4-53ef-4af2-a8c6-ab5ebb358536", false, 1848, false, "MMbBPNJuxqQ", "https://www.youtube.com/watch?v=MMbBPNJuxqQ", 26, "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", false, false, 6, [], 1, ~U[2025-07-04 09:00:37Z], ~U[2026-10-18 03:19:14Z], ~U[2026-10-18 03:19:14Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", 1848, false, "MMbBPNJuxqQ", "https://www.youtube.com/watch?v=MMbBPNJuxqQ", "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", false, 6, ~U[2025-07-04 09:00:37Z]] 03:19:14.858 [debug] QUERY OK source="sources" db=0.1ms idle=528.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" = ?) [6] 03:19:14.858 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:14.859 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [46827] 03:19:14.859 [debug] Current batch of media processed. Will check again in 1000ms 03:19:15.860 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 2005, "filename" => "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", "id" => "KpLlQK-f0IE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=KpLlQK-f0IE", "playlist_index" => 27, "timestamp" => 1750410029, "title" => "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", "upload_date" => "20250620"} 03:19:15.860 [debug] QUERY OK source="sources" db=0.2ms idle=1001.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:15.861 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:19:15.861 [debug] QUERY OK source="media_items" db=0.4ms idle=1002.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-20 09:00:29Z], 6] 03:19:15.864 [debug] QUERY OK source="media_items" db=2.4ms idle=1002.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", "e65d51da-730e-4448-b369-b1b0aff5af16", false, 2005, false, "KpLlQK-f0IE", "https://www.youtube.com/watch?v=KpLlQK-f0IE", 27, "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", false, false, 6, [], 1, ~U[2025-06-20 09:00:29Z], ~U[2026-10-18 03:19:15Z], ~U[2026-10-18 03:19:15Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", 2005, false, "KpLlQK-f0IE", "https://www.youtube.com/watch?v=KpLlQK-f0IE", "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", false, 6, ~U[2025-06-20 09:00:29Z]] 03:19:15.865 [debug] QUERY OK source="sources" db=0.2ms idle=898.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:15.865 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:15.865 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [16059] 03:19:15.866 [debug] Current batch of media processed. Will check again in 1000ms 03:19:16.867 [debug] Current batch of media processed. Will check again in 1000ms 03:19:17.868 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1544, "filename" => "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", "id" => "fEv0qCkgXKk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=fEv0qCkgXKk", "playlist_index" => 28, "timestamp" => 1749200466, "title" => "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", "upload_date" => "20250606"} 03:19:17.868 [debug] QUERY OK source="sources" db=0.2ms idle=898.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:17.868 [debug] QUERY OK source="sources" db=0.1ms idle=538.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] 03:19:17.869 [debug] QUERY OK source="media_items" db=0.3ms idle=539.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-06 09:01:06Z], 6] 03:19:17.870 [debug] QUERY OK source="media_items" db=0.6ms idle=539.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", "8fc13ce8-a2c3-455b-8712-29ef5691e197", false, 1544, false, "fEv0qCkgXKk", "https://www.youtube.com/watch?v=fEv0qCkgXKk", 28, "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", false, false, 6, [], 1, ~U[2025-06-06 09:01:06Z], ~U[2026-10-18 03:19:17Z], ~U[2026-10-18 03:19:17Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", 1544, false, "fEv0qCkgXKk", "https://www.youtube.com/watch?v=fEv0qCkgXKk", "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", false, 6, ~U[2025-06-06 09:01:06Z]] 03:19:17.870 [debug] QUERY OK source="sources" db=0.1ms idle=540.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" = ?) [6] 03:19:17.870 [debug] QUERY OK source="media_profiles" db=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] 03:19:17.871 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16058] 03:19:17.871 [debug] Current batch of media processed. Will check again in 1000ms 03:19:18.872 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 839, "filename" => "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", "id" => "Yx8Lcouocj4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Yx8Lcouocj4", "playlist_index" => 29, "timestamp" => 1747994455, "title" => "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", "upload_date" => "20250523"} 03:19:18.872 [debug] QUERY OK source="sources" db=0.1ms idle=1001.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:18.872 [debug] QUERY OK source="sources" db=0.1ms idle=1002.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:18.873 [debug] QUERY OK source="media_items" db=0.4ms idle=1002.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-23 10:00:55Z], 6] 03:19:18.874 [debug] QUERY OK source="media_items" db=0.9ms idle=1002.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", "80ca08be-6035-425d-84dc-2698c0e16aaf", false, 839, false, "Yx8Lcouocj4", "https://www.youtube.com/watch?v=Yx8Lcouocj4", 29, "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", false, false, 6, [], 1, ~U[2025-05-23 10:00:55Z], ~U[2026-10-18 03:19:18Z], ~U[2026-10-18 03:19:18Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", 839, false, "Yx8Lcouocj4", "https://www.youtube.com/watch?v=Yx8Lcouocj4", "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", false, 6, ~U[2025-05-23 10:00:55Z]] 03:19:18.875 [debug] QUERY OK source="sources" db=0.1ms idle=904.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:18.875 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:18.875 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [16057] 03:19:18.875 [debug] Current batch of media processed. Will check again in 1000ms 03:19:19.876 [debug] Current batch of media processed. Will check again in 1000ms 03:19:20.878 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1697, "filename" => "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", "id" => "gXHrvwwZ7Yo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", "playlist_index" => 30, "timestamp" => 1746781266, "title" => "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", "upload_date" => "20250509"} 03:19:20.878 [debug] QUERY OK source="sources" db=0.2ms idle=904.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:20.879 [debug] QUERY OK source="sources" db=0.1ms idle=549.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] 03:19:20.879 [debug] QUERY OK source="media_items" db=0.3ms idle=549.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-09 09:01:06Z], 6] 03:19:20.880 [debug] QUERY OK source="media_items" db=0.8ms idle=549.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", "09740978-6e58-4e6a-a913-5bc8480d4926", false, 1697, false, "gXHrvwwZ7Yo", "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", 30, "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", false, false, 6, [], 1, ~U[2025-05-09 09:01:06Z], ~U[2026-10-18 03:19:20Z], ~U[2026-10-18 03:19:20Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", 1697, false, "gXHrvwwZ7Yo", "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", false, 6, ~U[2025-05-09 09:01:06Z]] 03:19:20.881 [debug] QUERY OK source="sources" db=0.1ms idle=550.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" = ?) [6] 03:19:20.881 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:20.881 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16056] 03:19:20.881 [debug] Current batch of media processed. Will check again in 1000ms 03:19:21.882 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1580, "filename" => "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", "id" => "rF7mWcz4scs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=rF7mWcz4scs", "playlist_index" => 31, "timestamp" => 1745571684, "title" => "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", "upload_date" => "20250425"} 03:19:21.882 [debug] QUERY OK source="sources" db=0.2ms idle=1001.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:21.883 [debug] QUERY OK source="sources" db=0.1ms idle=1002.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:21.883 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-25 09:01:24Z], 6] 03:19:21.884 [debug] QUERY OK source="media_items" db=0.7ms idle=1002.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", "b6a133d4-27c8-4079-8004-3a954155a7e0", false, 1580, false, "rF7mWcz4scs", "https://www.youtube.com/watch?v=rF7mWcz4scs", 31, "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", false, false, 6, [], 1, ~U[2025-04-25 09:01:24Z], ~U[2026-10-18 03:19:21Z], ~U[2026-10-18 03:19:21Z], "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", 1580, false, "rF7mWcz4scs", "https://www.youtube.com/watch?v=rF7mWcz4scs", "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", false, 6, ~U[2025-04-25 09:01:24Z]] 03:19:21.885 [debug] QUERY OK source="sources" db=0.1ms idle=910.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:21.885 [debug] QUERY OK source="media_profiles" db=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] 03:19:21.885 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16055] 03:19:21.885 [debug] Current batch of media processed. Will check again in 1000ms 03:19:22.885 [debug] Current batch of media processed. Will check again in 1000ms 03:19:23.887 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1150, "filename" => "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", "id" => "ElW8L-3sRa8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ElW8L-3sRa8", "playlist_index" => 32, "timestamp" => 1744365621, "title" => "시초가 매매 방법 | 포모의 HTS 로그인2", "upload_date" => "20250411"} 03:19:23.887 [debug] QUERY OK source="sources" db=0.1ms idle=910.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:23.887 [debug] QUERY OK source="sources" db=0.0ms idle=557.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] 03:19:23.888 [debug] QUERY OK source="media_items" db=0.3ms idle=558.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-11 10:00:21Z], 6] 03:19:23.889 [debug] QUERY OK source="media_items" db=0.7ms idle=558.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "시초가 매매 방법 | 포모의 HTS 로그인2", "45eb3d9e-7900-4a36-96a8-b67056c4f781", false, 1150, false, "ElW8L-3sRa8", "https://www.youtube.com/watch?v=ElW8L-3sRa8", 32, "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", false, false, 6, [], 1, ~U[2025-04-11 10:00:21Z], ~U[2026-10-18 03:19:23Z], ~U[2026-10-18 03:19:23Z], "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "시초가 매매 방법 | 포모의 HTS 로그인2", 1150, false, "ElW8L-3sRa8", "https://www.youtube.com/watch?v=ElW8L-3sRa8", "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", false, 6, ~U[2025-04-11 10:00:21Z]] 03:19:23.889 [debug] QUERY OK source="sources" db=0.1ms idle=559.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" = ?) [6] 03:19:23.890 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:23.890 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16054] 03:19:23.890 [debug] Current batch of media processed. Will check again in 1000ms 03:19:24.890 [debug] Current batch of media processed. Will check again in 1000ms 03:19:25.892 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1083, "filename" => "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", "id" => "0O--nwabj2w", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=0O--nwabj2w", "playlist_index" => 33, "timestamp" => 1738918802, "title" => "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", "upload_date" => "20250207"} 03:19:25.892 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=913.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:25.893 [debug] QUERY OK source="sources" db=0.1ms idle=563.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] 03:19:25.893 [debug] QUERY OK source="media_items" db=0.3ms idle=563.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-02-07 09:00:02Z], 6] 03:19:25.894 [debug] QUERY OK source="media_items" db=0.8ms idle=563.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", "d3cdf701-92f9-4227-bb6e-81eef89ecd62", false, 1083, false, "0O--nwabj2w", "https://www.youtube.com/watch?v=0O--nwabj2w", 33, "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", false, false, 6, [], 1, ~U[2025-02-07 09:00:02Z], ~U[2026-10-18 03:19:25Z], ~U[2026-10-18 03:19:25Z], "#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", 1083, false, "0O--nwabj2w", "https://www.youtube.com/watch?v=0O--nwabj2w", "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", false, 6, ~U[2025-02-07 09:00:02Z]] 03:19:25.895 [debug] QUERY OK source="sources" db=0.1ms idle=565.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" = ?) [6] 03:19:25.895 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:25.895 [debug] QUERY OK source="media_items" db=0.1ms idle=2.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 [16053] 03:19:25.896 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #iSqaSuX0CjE/youtube video #iSqaSuX0CjE [iSqaSuX0CjE].NA", "id" => "iSqaSuX0CjE", "original_url" => "https://www.youtube.com/watch?v=iSqaSuX0CjE", "playlist_index" => 34, "title" => "youtube video #iSqaSuX0CjE"} 03:19:25.896 [debug] QUERY OK source="sources" db=0.1ms idle=2.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:25.896 [debug] Current batch of media processed. Will check again in 1000ms 03:19:26.897 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #_X6pPMIJW6Q/youtube video #_X6pPMIJW6Q [_X6pPMIJW6Q].NA", "id" => "_X6pPMIJW6Q", "original_url" => "https://www.youtube.com/watch?v=_X6pPMIJW6Q", "playlist_index" => 35, "title" => "youtube video #_X6pPMIJW6Q"} 03:19:26.897 [debug] QUERY OK source="sources" db=0.2ms idle=1001.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:26.897 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #9D3NFB7MVo4/youtube video #9D3NFB7MVo4 [9D3NFB7MVo4].NA", "id" => "9D3NFB7MVo4", "original_url" => "https://www.youtube.com/watch?v=9D3NFB7MVo4", "playlist_index" => 36, "title" => "youtube video #9D3NFB7MVo4"} 03:19:26.897 [debug] QUERY OK source="sources" db=0.0ms idle=1002.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:26.898 [debug] Current batch of media processed. Will check again in 1000ms 03:19:27.899 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #eCg-XBlKuhM/youtube video #eCg-XBlKuhM [eCg-XBlKuhM].NA", "id" => "eCg-XBlKuhM", "original_url" => "https://www.youtube.com/watch?v=eCg-XBlKuhM", "playlist_index" => 37, "title" => "youtube video #eCg-XBlKuhM"} 03:19:27.899 [debug] QUERY OK source="sources" db=0.2ms idle=1001.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:27.899 [debug] Current batch of media processed. Will check again in 1000ms 03:19:28.901 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #RYj7PiZzc-I/youtube video #RYj7PiZzc-I [RYj7PiZzc-I].NA", "id" => "RYj7PiZzc-I", "original_url" => "https://www.youtube.com/watch?v=RYj7PiZzc-I", "playlist_index" => 38, "title" => "youtube video #RYj7PiZzc-I"} 03:19:28.901 [debug] QUERY OK source="sources" db=0.2ms idle=1571.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:28.901 [debug] FileFollowerServer Handler: Got media attributes: %{"filename" => "/downloads/포모의 HTS 로그인2/NA youtube video #DXylRA6jsWc/youtube video #DXylRA6jsWc [DXylRA6jsWc].NA", "id" => "DXylRA6jsWc", "original_url" => "https://www.youtube.com/watch?v=DXylRA6jsWc", "playlist_index" => 39, "title" => "youtube video #DXylRA6jsWc"} 03:19:28.902 [debug] QUERY OK source="sources" db=0.0ms idle=1571.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:28.902 [debug] Current batch of media processed. Will check again in 1000ms 03:19:29.902 [debug] Current batch of media processed. Will check again in 1000ms 03:19:30.904 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1164, "filename" => "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", "id" => "CrqYtu_QeDc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CrqYtu_QeDc", "playlist_index" => 40, "timestamp" => 1770973217, "title" => "분봉 차트에서 3일 이동평균선 보는 방법", "upload_date" => "20260213"} 03:19:30.904 [debug] QUERY OK source="sources" db=0.2ms idle=1574.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:30.905 [debug] QUERY OK source="sources" db=0.1ms idle=921.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] 03:19:30.905 [debug] QUERY OK source="media_items" db=0.3ms idle=575.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-13 09:00:17Z], 6] 03:19:30.906 [debug] QUERY OK source="media_items" db=0.7ms idle=575.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "분봉 차트에서 3일 이동평균선 보는 방법", "fe68cf13-3320-40f8-8b28-74ca6a3088f8", false, 1164, false, "CrqYtu_QeDc", "https://www.youtube.com/watch?v=CrqYtu_QeDc", 40, "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", false, false, 6, [], 1, ~U[2026-02-13 09:00:17Z], ~U[2026-10-18 03:19:30Z], ~U[2026-10-18 03:19:30Z], "#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "분봉 차트에서 3일 이동평균선 보는 방법", 1164, false, "CrqYtu_QeDc", "https://www.youtube.com/watch?v=CrqYtu_QeDc", "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", false, 6, ~U[2026-02-13 09:00:17Z]] 03:19:30.906 [debug] QUERY OK source="sources" db=0.1ms idle=576.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" = ?) [6] 03:19:30.907 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:30.907 [debug] QUERY OK source="media_items" db=0.1ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47030] 03:19:30.907 [debug] Current batch of media processed. Will check again in 1000ms 03:19:31.907 [debug] Current batch of media processed. Will check again in 1000ms 03:19:32.909 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 1268, "filename" => "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", "id" => "LIxAUew7IQg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=LIxAUew7IQg", "playlist_index" => 41, "timestamp" => 1791265148, "title" => "직장인 필수 시청! 회사에서 단타하자", "upload_date" => "20261006"} 03:19:32.909 [debug] QUERY OK source="sources" db=0.2ms idle=923.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:32.909 [debug] QUERY OK source="sources" db=0.1ms idle=579.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] 03:19:32.910 [debug] QUERY OK source="media_items" db=0.3ms idle=580.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 05:39:08Z], 6] 03:19:32.911 [debug] QUERY OK source="media_items" db=0.6ms idle=580.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수 시청! 회사에서 단타하자", "2d75031f-2583-49c7-b29f-fcb9a91f7105", false, 1268, false, "LIxAUew7IQg", "https://www.youtube.com/watch?v=LIxAUew7IQg", 41, "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", false, false, 6, [], 1, ~U[2026-10-06 05:39:08Z], ~U[2026-10-18 03:19:32Z], ~U[2026-10-18 03:19:32Z], "#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수 시청! 회사에서 단타하자", 1268, false, "LIxAUew7IQg", "https://www.youtube.com/watch?v=LIxAUew7IQg", "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", false, 6, ~U[2026-10-06 05:39:08Z]] 03:19:32.911 [debug] QUERY OK source="sources" db=0.1ms idle=581.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" = ?) [6] 03:19:32.911 [debug] QUERY OK source="media_profiles" db=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] 03:19:32.912 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [47466] 03:19:32.912 [debug] Current batch of media processed. Will check again in 1000ms 03:19:33.913 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "duration" => 2140, "filename" => "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", "id" => "X2s_sk20YM4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=X2s_sk20YM4", "playlist_index" => 42, "timestamp" => 1755853257, "title" => "기업분석 요약 노트 | 포모의 HTS 로그인2", "upload_date" => "20250822"} 03:19:33.913 [debug] QUERY OK source="sources" db=0.3ms idle=1002.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:33.914 [debug] QUERY OK source="sources" db=0.1ms idle=1002.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] 03:19:33.914 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-22 09:00:57Z], 6] 03:19:33.918 [debug] QUERY OK source="media_items" db=3.6ms idle=1002.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "기업분석 요약 노트 | 포모의 HTS 로그인2", "03293252-a542-4f36-8ff9-49b0efda5cda", false, 2140, false, "X2s_sk20YM4", "https://www.youtube.com/watch?v=X2s_sk20YM4", 42, "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", false, false, 6, [], 1, ~U[2025-08-22 09:00:57Z], ~U[2026-10-18 03:19:33Z], ~U[2026-10-18 03:19:33Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "기업분석 요약 노트 | 포모의 HTS 로그인2", 2140, false, "X2s_sk20YM4", "https://www.youtube.com/watch?v=X2s_sk20YM4", "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", false, 6, ~U[2025-08-22 09:00:57Z]] 03:19:33.918 [debug] QUERY OK source="sources" db=0.1ms idle=932.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" = ?) [6] 03:19:33.919 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:33.919 [debug] QUERY OK source="media_items" db=0.1ms idle=5.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48467] 03:19:33.919 [debug] Current batch of media processed. Will check again in 1000ms 03:19:34.920 [debug] Current batch of media processed. Will check again in 1000ms 03:19:35.921 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. 한국거래소(KRX) 수수료 한시적 인하 기간('25.12.15~'26.02.13)에는 주식 거래 수수료가 0.0145%입니다. 해당 기간 이후 수수료가 변동될 수 있습니다. / 총보수, 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능 / 레버리지ETF는 원금 손실 크게 발생 가능 / 레버리지펀드의 기간 수익률은 추종하는 기초자산의 일간 수익률과 차이 발생 가능 / ETF 취득하시기 전에 투자대상, 보수·수수료 및 환매방법 등에 관하여 (간이)투자설명서를 반드시 읽어보시기 바랍니다. ※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음\n\nTIGER반도체Top10 \n(총보수*비용 0.51%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 452,750 ) \nKODEX반도체\n(총보수*비용 0.4625%, 위험등급 1등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.0125%, 직전회계연도 증권거래비용 398,932)\nKODEX AI 반도체\n(총보수*비용 0.0584%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0584%, 직전회계연도 증권거래비용 259,038)\nKIWOOM K-반도체 북미 공급\n(총보수*비용 0.8274%, 위험등급 2등급, 집합투자 0.44%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.3374%, 직전회계연도 증권거래비용 5,699) \nTIMEFOLIO K바이오액티브\n(총보수*비용 0.83%, 위험등급 2등급, 집합투자 0.69%, 지정참가 0.05%, 신탁업자 0.03%, 일반사무 0.03%, 기타 0.03%, 직전회계연도 증권거래비용 0.28)\nKOACT AI 인프라 액티브 \n(총보수*비용 0.5628%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.05%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0628%, 직전회계연도 증권거래비용 116,255) \nKOACT K 수출 핵심 기업\n(총보수*비용 0.5595%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0595%, 직전회계연도 증권거래비용 470,399) \nKODEX 자동차 ETF \n(총보수*비용 0.4629% 위험등급 2등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.129%, 직전회계연도 증권거래비용 153,216)\nKODEX 2차전지산업\n(총보수*비용 0.5515% 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.1015%, 직전회계연도 증권거래비용 760,278)\nTIGER 바이오 TOP10 \n(총보수*비용 0.44% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.04%, 직전회계연도 증권거래비용 195,746)\nKODEX AI전력핵심설비 \n(총보수*비용 0.4586% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.01%, 기타 0.0686%, 직전회계연도 증권거래비용 281,859) \nACE 원자력TOP10 \n(총보수*비용 0.3530% 위험등급 2등급, 집합투자 0.2600%, 지정참가 0.0100%, 신탁업자 0.0150%, 일반사무 0.0150%, 기타 0.0530%, 직전회계연도 증권거래비용 281,859) \nTIGER 조선TOP10 \n(총보수*비용 0.41% 위험등급 2등급, 집합투자 0.309%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 0.0559) \nKODEX K방산 TOP10 \n(총보수*비용 0.5224%, 위험등급 2등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0724%, 직전회계연도 증권거래비용 81,199)\nKODEX 로봇 액티브 \n(총보수*비용 0.5689% 위험등급 2등급, 집합투자 0.459%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0689%, 직전회계연도 증권거래비용 53,675)", "duration" => 2039, "filename" => "/downloads/포모의 HTS 로그인2/2026-10-07 ETF로 주도주 찾기/ETF로 주도주 찾기 [Bh-45IJWWgk].mp4", "id" => "Bh-45IJWWgk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Bh-45IJWWgk", "playlist_index" => 43, "timestamp" => 1791335731, "title" => "ETF로 주도주 찾기", "upload_date" => "20261007"} 03:19:35.922 [debug] QUERY OK source="sources" db=0.2ms idle=933.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:35.922 [debug] QUERY OK source="sources" db=0.1ms idle=592.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] 03:19:35.922 [debug] QUERY OK source="media_items" db=0.3ms idle=592.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 01:15:31Z], 6] 03:19:35.924 [debug] QUERY OK source="media_items" db=1.1ms idle=593.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. 한국거래소(KRX) 수수료 한시적 인하 기간('25.12.15~'26.02.13)에는 주식 거래 수수료가 0.0145%입니다. 해당 기간 이후 수수료가 변동될 수 있습니다. / 총보수, 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능 / 레버리지ETF는 원금 손실 크게 발생 가능 / 레버리지펀드의 기간 수익률은 추종하는 기초자산의 일간 수익률과 차이 발생 가능 / ETF 취득하시기 전에 투자대상, 보수·수수료 및 환매방법 등에 관하여 (간이)투자설명서를 반드시 읽어보시기 바랍니다. ※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음\n\nTIGER반도체Top10 \n(총보수*비용 0.51%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 452,750 ) \nKODEX반도체\n(총보수*비용 0.4625%, 위험등급 1등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.0125%, 직전회계연도 증권거래비용 398,932)\nKODEX AI 반도체\n(총보수*비용 0.0584%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0584%, 직전회계연도 증권거래비용 259,038)\nKIWOOM K-반도체 북미 공급\n(총보수*비용 0.8274%, 위험등급 2등급, 집합투자 0.44%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.3374%, 직전회계연도 증권거래비용 5,699) \nTIMEFOLIO K바이오액티브\n(총보수*비용 0.83%, 위험등급 2등급, 집합투자 0.69%, 지정참가 0.05%, 신탁업자 0.03%, 일반사무 0.03%, 기타 0.03%, 직전회계연도 증권거래비용 0.28)\nKOACT AI 인프라 액티브 \n(총보수*비용 0.5628%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.05%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0628%, 직전회계연도 증권거래비용 116,255) \nKOACT K 수출 핵심 기업\n(총보수*비용 0.5595%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0595%, 직전회계연도 증권거래비용 470,399) \nKODEX 자동차 ETF \n(총보수*비용 0.4629% 위험등급 2등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.129%, 직전회계연도 증권거래비용 153,216)\nKODEX 2차전지산업\n(총보수*비용 0.5515% 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.1015%, 직전회계연도 증권거래비용 760,278)\nTIGER 바이오 TOP10 \n(총보수*비용 0.44% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.04%, 직전회계연도 증권거래비용 195,746)\nKODEX AI전력핵심설비 \n(총보수*비용 0.4586% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.01%, 기타 0.0686%, 직전회계연도 증권거래비용 281,859) \nACE 원자력TOP10 \n(총보수*비용 0.3530% 위험등급 2등급, 집합투자 0.2600%, 지정참가 0.0100%, 신탁업자 0.0150%, 일반사무 0.0150%, 기타 0.0530%, 직전회계연도 증권거래비용 281,859) \nTIGER 조선TOP10 \n(총보수*비용 0.41% 위험등급 2등급, 집합투자 0.309%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 0.0559) \nKODEX K방산 TOP10 \n(총보수*비용 0.5224%, 위험등급 2등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0724%, 직전회계연도 증권거래비용 81,199)\nKODEX 로봇 액티브 \n(총보수*비용 0.5689% 위험등급 2등급, 집합투자 0.459%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0689%, 직전회계연도 증권거래비용 53,675)", "ETF로 주도주 찾기", "629826a3-f328-4cc2-a964-d03b83a58a35", false, 2039, false, "Bh-45IJWWgk", "https://www.youtube.com/watch?v=Bh-45IJWWgk", 43, "/downloads/포모의 HTS 로그인2/2026-10-07 ETF로 주도주 찾기/ETF로 주도주 찾기 [Bh-45IJWWgk].mp4", false, false, 6, [], 1, ~U[2026-10-07 01:15:31Z], ~U[2026-10-18 03:19:35Z], ~U[2026-10-18 03:19:35Z], "#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0. (truncated) 03:19:35.924 [debug] QUERY OK source="sources" db=0.1ms idle=594.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" = ?) [6] 03:19:35.924 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:19:35.925 [debug] QUERY OK source="media_items" db=0.1ms 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 [48483] 03:19:35.925 [debug] Current batch of media processed. Will check again in 1000ms 03:19:36.644 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLNmdSYZfFnFYr_ZvC8YCnXM5wVZ5i7NjV&si=tpPXEtloWo6vqo3h --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/포모의 HTS 로그인2/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:2160,+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/98/7c/987c7004491017d0b7d698a95ee7379d5b33707227be94f9df002774a7d62e01.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 03:19:36.647 [debug] Gracefully stopping file follower 03:19:36.647 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=723.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 03:19:36.648 [debug] QUERY OK source="sources" db=0.0ms idle=723.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] 03:19:36.648 [debug] QUERY OK source="media_items" db=0.3ms idle=723.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-25 09:00:20Z], 6] 03:19:36.649 [debug] QUERY OK source="media_items" db=0.8ms idle=723.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "내 종목만 안 오르는 진짜 이유를 찾자!", "d6a59451-14d5-4e65-a906-d80669200991", false, 1655, false, "niaLYJRZ7rA", "https://www.youtube.com/watch?v=niaLYJRZ7rA", 1, "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", false, false, 6, [], 1, ~U[2026-09-25 09:00:20Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#멀티차트 #시장수급 #영웅문4\n\n⚡오늘의 기능⚡\n멀티차트 200% 활용하기!\n\n00:00 멀티차트 200% 알아보기\n04:11 상대비교 보는 방법\n17:29 강한 섹터 판별하는 기준\n26:50 멀티차트 팁\n27:28 다음영상\n\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01424호(26.09.24~27.09.23)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "내 종목만 안 오르는 진짜 이유를 찾자!", 1655, false, "niaLYJRZ7rA", "https://www.youtube.com/watch?v=niaLYJRZ7rA", "/downloads/포모의 HTS 로그인2/2026-09-25 내 종목만 안 오르는 진짜 이유를 찾자!/내 종목만 안 오르는 진짜 이유를 찾자! [niaLYJRZ7rA].mp4", false, 6, ~U[2026-09-25 09:00:20Z]] 03:19:36.650 [debug] QUERY OK source="sources" db=0.1ms idle=660.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] 03:19:36.650 [debug] QUERY OK source="media_items" db=0.2ms idle=2.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-09-11 09:00:27Z], 6] 03:19:36.651 [debug] QUERY OK source="media_items" db=0.7ms idle=2.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "조건검색식, 기초부터 실전 매매 세팅까지!", "5dbd77a3-ba3c-4578-bec3-8c261dbd5126", false, 2954, false, "4nSxuddnkXk", "https://www.youtube.com/watch?v=4nSxuddnkXk", 2, "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", false, false, 6, [], 1, ~U[2026-09-11 09:00:27Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#조건검색 #영웅문4 #검색식\n\n⚡오늘의 기능⚡\n조건검색 기초부터 실전까지!\n\n00:00 조건검색식 원리와 기초\n02:39 조건검색식 만들 때 유의해야 할 점\n10:04 조건검색식 만드는 방법 '범위지정'\n15:12 조건검색식 만드는 방법 '기본조건 활용'\n17:42 조건검색식 만드는 방법 '기술적지표 활용'\n23:24 조건검색식 만드는 방법 '재무지표 활용'\n28:50 조건검색식 만드는 방법 '상대비교 활용'\n31:33 연습하기\n49:06 다음영상\n\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-01326호(26.09.10~27.09.09)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "조건검색식, 기초부터 실전 매매 세팅까지!", 2954, false, "4nSxuddnkXk", "https://www.youtube.com/watch?v=4nSxuddnkXk", "/downloads/포모의 HTS 로그인2/2026-09-11 조건검색식, 기초부터 실전 매매 세팅까지!/조건검색식, 기초부터 실전 매매 세팅까지! [4nSxuddnkXk].mp4", false, 6, ~U[2026-09-11 09:00:27Z]] 03:19:36.651 [debug] QUERY OK source="sources" db=0.1ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.652 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-28 09:00:37Z], 6] 03:19:36.653 [debug] QUERY OK source="media_items" db=0.7ms idle=2.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "기초부터 복습까지! HTS 수식관리자 총정리", "16100a69-ad0d-4c5a-9854-dd298ea56af5", false, 3091, false, "du0PkCrFwgY", "https://www.youtube.com/watch?v=du0PkCrFwgY", 3, "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", false, false, 6, [], 1, ~U[2026-08-28 09:00:37Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#영웅문 #수식관리자 #수식\n\n⚡오늘의 기능⚡\nHTS 수식관리자 총정리\n\n00:00 수식관리자 기초 총정리\n02:17 데이터함수\n10:24 산술연산자\n14:18 관계연산자\n19:22 논리연산자\n24:32 조건문\n31:17 수학함수\n34:45 일반통계함수\n43:00 기타함수\n47:40 응용 버전\n51:13 함수설명\n51:23 다음 영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n\n※키움증권 준법감시인 심사필 제26-01235호(26.08.28~27.08.27)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "기초부터 복습까지! HTS 수식관리자 총정리", 3091, false, "du0PkCrFwgY", "https://www.youtube.com/watch?v=du0PkCrFwgY", "/downloads/포모의 HTS 로그인2/2026-08-28 기초부터 복습까지! HTS 수식관리자 총정리/기초부터 복습까지! HTS 수식관리자 총정리 [du0PkCrFwgY].mp4", false, 6, ~U[2026-08-28 09:00:37Z]] 03:19:36.653 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.653 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-23 08:00:11Z], 6] 03:19:36.654 [debug] QUERY OK source="media_items" db=0.8ms idle=1.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "돈 들어오는 구간 찾는 방법!", "5bb074ad-41e4-4dbc-a78d-50f0dbf1fab3", false, 2061, false, "1crrXULrqyk", "https://www.youtube.com/watch?v=1crrXULrqyk", 4, "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", false, false, 6, [], 1, ~U[2026-08-23 08:00:11Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#돈의흐름 #HTS #주도주 \n\n⚡오늘의 기능⚡\n시장주도주 찾는 방법\n\n00:00 돈 들어오는 구간 찾는 방법!\n04:06 실시간 돈의 흐름 추척 방법 (X-ray 순간체결량)\n08:18 돈이 들어온 종목 찾는 방법 (조건검색)\n17:01 차트에 돌파구간 표시하기 (신호검색)\n24:27 가짜 돌파 걸러내는 5가지 필터\n33:41 돈이 들어오는 구간 찾는 방법(신호검색)\n34:13 다음영상\n\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00804호(25.06.19~26.06.18)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "돈 들어오는 구간 찾는 방법!", 2061, false, "1crrXULrqyk", "https://www.youtube.com/watch?v=1crrXULrqyk", "/downloads/포모의 HTS 로그인2/2026-08-23 돈 들어오는 구간 찾는 방법!/돈 들어오는 구간 찾는 방법! [1crrXULrqyk].mp4", false, 6, ~U[2026-08-23 08:00:11Z]] 03:19:36.655 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.655 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-22 08:00:37Z], 6] 03:19:36.656 [debug] QUERY OK source="media_items" db=0.7ms idle=2.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", "b36ba064-11d5-4269-8947-59f6e460058f", false, 1519, false, "xJ7md1FoEBY", "https://www.youtube.com/watch?v=xJ7md1FoEBY", 5, "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", false, false, 6, [], 1, ~U[2026-08-22 08:00:37Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#이동평균선 #HTS #매매전략\n\n⚡오늘의 기능⚡\n이평선으로 시세 초입 찾아 매매하기\n\n00:00 댓글 질문 해결하기! 이동평균선 편\n02:05 골든크로스 한 종목 찾기 (조건검색)\n08:19 골든크로스 구간 차트에 신호 표시하기\n13:06 골든크로스 신호 복기하기\n20:52 데드크로스 신호 설정하기\n25:12 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n\n※키움증권 준법감시인 심사필 제26-00652호(26.05.22~27.05.21)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기", 1519, false, "xJ7md1FoEBY", "https://www.youtube.com/watch?v=xJ7md1FoEBY", "/downloads/포모의 HTS 로그인2/2026-08-22 추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기/추세 전환의 시작점! 골든크로스 신호로 종목 걸러내기 [xJ7md1FoEBY].mp4", false, 6, ~U[2026-08-22 08:00:37Z]] 03:19:36.656 [debug] QUERY OK source="sources" db=0.0ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.656 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-21 08:00:38Z], 6] 03:19:36.657 [debug] QUERY OK source="media_items" db=0.7ms idle=1.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "지수보다 강한 놈을 잡아 전략짜자!", "307851b2-14e5-4d35-9af2-30f7eabab6af", false, 2564, false, "OtMK7cTvUwI", "https://www.youtube.com/watch?v=OtMK7cTvUwI", 6, "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", false, false, 6, [], 1, ~U[2026-08-21 08:00:38Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#매매 #HTS #트레이딩전략\n\n⚡오늘의 기능⚡\n트레이딩 전략 짜는 방법\n\n00:00 트레이딩 하기 전 먼저 봐야 할 창은?\n03:53 AI활용한 시장 전망 체크하기\n08:41 지수를 끌어올리는 섹터 찾기 (멀티차트 활용법)\n18:47 내가 찾은 종목 AI에 분석 요청\n34:10 투자 전략 세우는 방법\n42:36 다음 영상 추천\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00549호(25.05.01~26.04.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "지수보다 강한 놈을 잡아 전략짜자!", 2564, false, "OtMK7cTvUwI", "https://www.youtube.com/watch?v=OtMK7cTvUwI", "/downloads/포모의 HTS 로그인2/2026-08-21 지수보다 강한 놈을 잡아 전략짜자!/지수보다 강한 놈을 잡아 전략짜자! [OtMK7cTvUwI].mp4", false, 6, ~U[2026-08-21 08:00:38Z]] 03:19:36.658 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.658 [debug] QUERY OK source="media_items" db=0.2ms idle=2.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-20 08:00:24Z], 6] 03:19:36.659 [debug] QUERY OK source="media_items" db=0.6ms idle=2.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", "8ed4c4b0-9b52-4c1d-ac50-6b4da1abe070", false, 1887, false, "Y0QXcAemBJ4", "https://www.youtube.com/watch?v=Y0QXcAemBJ4", 7, "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", false, false, 6, [], 1, ~U[2026-08-20 08:00:24Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#키움증권 #영웅문 #자동주문 \n\n⚡오늘의 기능⚡\nMTS로 자동 주문하기!\n\n00:00 MTS 자동주문 왜 사용해야할까?\n01:44 자동주문 유의할 점!\n02:22 자동 매수 방법\n09:55 자동 매도 방법\n17:27 트레일링 스탑 설정법\n31:19 더보기\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-00487호(26.04.17~27.04.16)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법", 1887, false, "Y0QXcAemBJ4", "https://www.youtube.com/watch?v=Y0QXcAemBJ4", "/downloads/포모의 HTS 로그인2/2026-08-20 영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법/영웅문S# 자동 감시 주문,직장인을 위한 주문 설정 및 활용법 [Y0QXcAemBJ4].mp4", false, 6, ~U[2026-08-20 08:00:24Z]] 03:19:36.659 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.660 [debug] QUERY OK source="media_items" db=0.2ms idle=2.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-19 08:00:38Z], 6] 03:19:36.661 [debug] QUERY OK source="media_items" db=0.7ms idle=2.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "복잡한 수급 데이터 이 화면 하나로 끝!", "b9fee16f-5215-469d-9d93-04e0e6525e16", false, 1448, false, "VzxZsZLorcg", "https://www.youtube.com/watch?v=VzxZsZLorcg", 8, "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", false, false, 6, [], 1, ~U[2026-08-19 08:00:38Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#수급 #외국인 #개인\n\n⚡오늘의 기능⚡\n외국인, 기관, 개인 수급 체크하기\n\n00:00 이동평균선\n00:39 수급에 따라 선호하는 업황이 다른가요?\n04:48 외국인, 기관의 특징은?\n10:01 외국인, 기관의 매수 방향 파악하기\n14:10 종목별 수급 파악하기\n25:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00236호(26.02.27~27.02.26)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "복잡한 수급 데이터 이 화면 하나로 끝!", 1448, false, "VzxZsZLorcg", "https://www.youtube.com/watch?v=VzxZsZLorcg", "/downloads/포모의 HTS 로그인2/2026-08-19 복잡한 수급 데이터 이 화면 하나로 끝!/복잡한 수급 데이터 이 화면 하나로 끝! [VzxZsZLorcg].mp4", false, 6, ~U[2026-08-19 08:00:38Z]] 03:19:36.661 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.661 [debug] QUERY OK source="media_items" db=0.2ms idle=2.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-08-18 08:00:35Z], 6] 03:19:36.662 [debug] QUERY OK source="media_items" db=0.7ms idle=2.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "패닉 셀 하기 전 반드시 확인해야 할 것", "121691a6-eb3c-4fdc-abb4-6050dbf9a248", false, 2108, false, "CWAN_vfIkA4", "https://www.youtube.com/watch?v=CWAN_vfIkA4", 9, "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", false, false, 6, [], 1, ~U[2026-08-18 08:00:35Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#hts #수식관리자 #과매도\n\n⚡오늘의 기능⚡\n과매도 구간 알아보기\n\n00:00 과매도란?\n02:09 과매도 구간 찾기\n05:57 보조지표를 활용해 과매도 구간 찾기\n12:05 과매도 구간에서 사는 방법\n35:02 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00334호(26.03.20~27.03.19)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "패닉 셀 하기 전 반드시 확인해야 할 것", 2108, false, "CWAN_vfIkA4", "https://www.youtube.com/watch?v=CWAN_vfIkA4", "/downloads/포모의 HTS 로그인2/2026-08-18 패닉 셀 하기 전 반드시 확인해야 할 것/패닉 셀 하기 전 반드시 확인해야 할 것 [CWAN_vfIkA4].mp4", false, 6, ~U[2026-08-18 08:00:35Z]] 03:19:36.663 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.663 [debug] QUERY OK source="media_items" db=0.2ms idle=2.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-31 09:00:31Z], 6] 03:19:36.664 [debug] QUERY OK source="media_items" db=0.8ms idle=2.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", "e33b2564-d3d8-4e7a-9095-fd5492d885c5", false, 2653, false, "F_urGvb5_RU", "https://www.youtube.com/watch?v=F_urGvb5_RU", 10, "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", false, false, 6, [], 1, ~U[2026-07-31 09:00:31Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#꿀기능 #HTS #셋팅법\n\n⚡오늘의 기능⚡\n초보자부터 트레이더까지, HTS 꿀기능\n\n00:00 HTS 세팅 노하우\n01:12 필드 설정법\n05:15 주식 사고팔기\n08:39 차트 돌려보기 \n12:05 당일 시장 종목 파악하기 \n19:31 수급 파악하기\n31:00 종목정보 파악하기\n37:40 화면전환하기 단축키 사용법\n40:58 단축키 만들기\n44:05 다음 영상\n\n※ 본 콘텐츠 속 개념·전략 등은 금융의 이해를 돕기 위한 단순 예시입니다. 실제 시장은 금리 변동, 시황 등 다양한 요인의 영향을 받으므로 예시의 내용은 사실과 다를 수 있습니다\n\n※키움증권 준법감시인 심사필 제26-01074호(26.07.31~27.07.30)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ 미국주식 수수료[온라인: 0.25%, 오프라인: 0.50%], 미국주식 매도 시 SEC FEE 0.00206% 제비용 적용(최소비용 $0.01) ※ 기타 국가별 세금 및 기타 수수료, 최소주문금액 등 자세한 사항은 당사 홈페이지 참고.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법", 2653, false, "F_urGvb5_RU", "https://www.youtube.com/watch?v=F_urGvb5_RU", "/downloads/포모의 HTS 로그인2/2026-07-31 초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법/초보자부터 트레이더까지, 이 영상으로 끝내는 HTS 세팅법 [F_urGvb5_RU].mp4", false, 6, ~U[2026-07-31 09:00:31Z]] 03:19:36.664 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.665 [debug] QUERY OK source="media_items" db=0.3ms idle=2.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-17 09:00:30Z], 6] 03:19:36.666 [debug] QUERY OK source="media_items" db=0.9ms idle=2.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "시장이 힘들 때 대비하는 전략", "a5e82945-505a-4f4c-9f54-9c06a63d1bc7", false, 2077, false, "gZTpk4n_PDw", "https://www.youtube.com/watch?v=gZTpk4n_PDw", 11, "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", false, false, 6, [], 1, ~U[2026-07-17 09:00:30Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#변동성 #HTS #전략\n\n⚡오늘의 기능⚡\n변동성 심한 장세에서 내 수익을 지키는 전략\n\n00:00 요즘 시장 왜 이렇게 어려울까요?\n02:00 시장에 맞춰 투자전략 바꾸기\n03:44 시장이 계속 바뀌는 이유?\n16:57 1년 중 상승하는 날은 몇일?\n24:31 수익의 질 지표화 하기\n34:31 다음 영상\n\n※키움증권 준법감시인 심사필 제26-00983호(26.07.17~27.07.16)\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다 \n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다 \n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다 \n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다. \n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. \n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다. \n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다. \n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. \n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다. \n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다", "시장이 힘들 때 대비하는 전략", 2077, false, "gZTpk4n_PDw", "https://www.youtube.com/watch?v=gZTpk4n_PDw", "/downloads/포모의 HTS 로그인2/2026-07-17 시장이 힘들 때 대비하는 전략/시장이 힘들 때 대비하는 전략 [gZTpk4n_PDw].mp4", false, 6, ~U[2026-07-17 09:00:30Z]] 03:19:36.666 [debug] QUERY OK source="sources" db=0.1ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.667 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-07-03 09:00:33Z], 6] 03:19:36.667 [debug] QUERY OK source="media_items" db=0.6ms idle=2.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", "038aea2e-45a1-408e-a818-daa5df780db1", false, 1296, false, "tJDQVqRzklM", "https://www.youtube.com/watch?v=tJDQVqRzklM", 12, "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", false, false, 6, [], 1, ~U[2026-07-03 09:00:33Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#조건검색식 #통합조건식 #시초가왜곡\n\n⚡오늘의 기능⚡\n통합조건식을 활용해 종목 필터링하고 가짜신호 찾기\n\n00:00 드디어 업데이트된 통합 조건식\n06:41 통합시세? KRX시세? 어떤 걸 활용하는 게 좋을까?\n13:50 가짜 신호 차트에 표시하기\n19:58 통합조건 업데이트 핵심 요약\n21:30 다음 영상 추천\n\n\n※키움증권 준법감시인 심사필 제26-00900호(26.07.03~27.07.03)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※ETF 거래 수수료가 별도로 발생할 수 있습니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "이거 모르면 손해! 드디어 업데이트 된 통합 조건식", 1296, false, "tJDQVqRzklM", "https://www.youtube.com/watch?v=tJDQVqRzklM", "/downloads/포모의 HTS 로그인2/2026-07-03 이거 모르면 손해! 드디어 업데이트 된 통합 조건식/이거 모르면 손해! 드디어 업데이트 된 통합 조건식 [tJDQVqRzklM].mp4", false, 6, ~U[2026-07-03 09:00:33Z]] 03:19:36.668 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.668 [debug] QUERY OK source="media_items" db=0.3ms idle=2.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-05 09:00:26Z], 6] 03:19:36.669 [debug] QUERY OK source="media_items" db=0.8ms idle=2.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", "f2dc595b-8fcc-4e99-9990-8e07a858d44d", false, 2386, false, "bb2pO2nGHf0", "https://www.youtube.com/watch?v=bb2pO2nGHf0", 13, "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", false, false, 6, [], 1, ~U[2026-06-05 09:00:26Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#피보나치수열 #HTS #매매전략\n\n⚡오늘의 기능⚡\n피보나치수열, 거래량, 거래대금, 등락률\n\n00:00 차트에 메모 입력하기\n05:21 당일 분봉 피보나치 자동 수식 만들기\n16:24 분봉상 거래대금 구간별 색상 강조하기\n27:30 전봉 대비 1% 이상 상승 시 화살표 표시하기\n31:08 전봉 대비 10% 이상 증가 시 화살표 표시하기\n34:46 등락기준, 거래량 기준 두가지 조건을 만족하는 신호 만들기\n39:38 다음 영상 추천\n\n※키움증권 준법감시인 심사필 제26-00705호(26.06.05~27.06.04)\n\n※투자자는 키움증권으로부터 금융투자상품(주식 및 집합투자증권)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서, (간이)투자설명서 및 집합투자규약 등을 반드시 읽어보시기 바랍니다\n※금융투자상품(주식 및 집합투자증권)은 자산가격 변동, 환율변동 등에 따라 투자원금의 손실(0~ 100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다\n※레버리지형 펀드는 투자원금 손실이 크게 확대될 수 있습니다\n※레버리지펀드(2배, 인버스, 인버스 2배)의 기간 수익률은 추종하는 기초자산(지수)의 일간 수익률과 차이가 발생할 수 있습니다.\n※이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다.\n※증권거래비용, 기타비용이 추가로 발생할 수 있습니다.\n※집합투자증권의 구성종목 및 비중은 추후 변동될 수 있습니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)", 2386, false, "bb2pO2nGHf0", "https://www.youtube.com/watch?v=bb2pO2nGHf0", "/downloads/포모의 HTS 로그인2/2026-06-05 거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률)/거래량 뒤에 숨은 진짜 돈을 찾아라! (피보나치수열, 거래량, 거래대금, 등락률) [bb2pO2nGHf0].mp4", false, 6, ~U[2026-06-05 09:00:26Z]] 03:19:36.670 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:36.670 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-03 09:00:17Z], 6] 03:19:36.671 [debug] QUERY OK source="media_items" db=1.0ms idle=2.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", "ab8aee74-a4f8-4547-b730-c3d9079b3ed6", false, 1391, false, "Eb02sSekWo8", "https://www.youtube.com/watch?v=Eb02sSekWo8", 14, "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", false, false, 6, [], 1, ~U[2026-04-03 09:00:17Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#키움증권 #영웅문 #시장 \n\n⚡오늘의 기능⚡\nMTS로 빠르게 시장 체크하기\n\n00:00 시작\n00:06 요즘 시장 어떻게 거래해야 할까?\n01:06 시장을 미리 파악하는 MTS 메뉴는?\n07:20 주식과 금리는 무슨 상관?\n12:33 예탁금 100조? 불장의 신호인가?\n17:08 인간지표 활용법\n20:30 공포가 기회다?\n23:06 다음 영상\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00415호(26.04.03~27.04.02)\n[주식 및 집합투자증권] 투자 전 설명 청취 및 (간이)투자설명서, 집합투자규약, 상품설명서 필독 / 이 금융상품(주식 및 집합투자증권)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동, 환율변동 등에 따른 원금손실(0~100%)발생가능 및 투자자 귀속/주식수수료는 0.015%(KRX), 0.0145%(NXT)이며, 홈페이지 참고 / 미국 기본 수수료[온라인:0.25%, 오프라인 0.5%], 매도 시 SEC FEE 0.00206% 제비용부과(최소비용 $0.01) / 국가별 세금 및 기타수수료 홈페이지 참고 / 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능. [채권] 투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(채권)은 예금자보호법에 따라 보호되지 않습니다. / 발행사(AA,2026.03.16,한국기업평가) 신용위험에 따른 원금 손실 가능 (AAA / AA・A・BBB 각 +,O,-순으로 투자적격등급 구분) / 청약의 권유는 (예비, 간이) 투자설명서에 따름. [선물] 투자 전 설명 청취 및 상품설명서 필독 /이 금융상품(선물)은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금 초과손실 발생가능 및 투자자귀속/유지증거금 미달 시 강제청산 유의 / 해외선물옵션 수수료 계약당 (달러 상품 $7.5/Micro 상품 $2) 및 기타 비용은 당사 홈페이지 참고 / 본 영상은 종목추천이 아니며, 투자판단의 최종 책임은 고객 본인에게 있음", "주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!", 1391, false, "Eb02sSekWo8", "https://www.youtube.com/watch?v=Eb02sSekWo8", "/downloads/포모의 HTS 로그인2/2026-04-03 주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술!/주린이 탈출! 종목 분석보다 중요한 시장 읽는 기술! [Eb02sSekWo8].mp4", false, 6, ~U[2026-04-03 09:00:17Z]] 03:19:36.672 [debug] QUERY OK source="sources" db=0.1ms idle=3.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] 03:19:36.672 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-30 09:00:17Z], 6] 03:19:37.120 [debug] QUERY OK source="media_items" db=447.8ms idle=2.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "저가 매수 타이밍을 알아보자!", "a8ac380a-0eed-4650-b543-28277eed4980", false, 1459, false, "8EoH-ULFH50", "https://www.youtube.com/watch?v=8EoH-ULFH50", 15, "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", false, false, 6, [], 1, ~U[2026-01-30 09:00:17Z], ~U[2026-10-18 03:19:36Z], ~U[2026-10-18 03:19:36Z], "#종목선정 #HTS #수익률\n\n⚡오늘의 기능⚡\n장기 투자할 종목 고르는 방법\n\n00:00 좋은기업은 언제 사야하나?\n07:37 종목선정 전 필터링 하기 (조건 검색)\n22:36 장투의 기간은 어느정도인가?\n24:13 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00125호(26.01.30~27.01.29)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "저가 매수 타이밍을 알아보자!", 1459, false, "8EoH-ULFH50", "https://www.youtube.com/watch?v=8EoH-ULFH50", "/downloads/포모의 HTS 로그인2/2026-01-30 저가 매수 타이밍을 알아보자!/저가 매수 타이밍을 알아보자! [8EoH-ULFH50].mp4", false, 6, ~U[2026-01-30 09:00:17Z]] 03:19:37.121 [debug] QUERY OK source="sources" db=0.2ms idle=449.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] 03:19:37.121 [debug] QUERY OK source="media_items" db=0.4ms idle=449.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-16 09:00:06Z], 6] 03:19:37.224 [debug] QUERY OK source="media_items" db=102.5ms idle=449.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수, 종가배팅이 답인 이유!", "42a8c8e7-f147-4fcb-8dcf-febd4d1727c6", false, 1203, false, "2mDQr3dUTCI", "https://www.youtube.com/watch?v=2mDQr3dUTCI", 16, "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", false, false, 6, [], 1, ~U[2026-01-16 09:00:06Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#종가배팅 #HTS #수익률\n\n⚡오늘의 기능⚡\n종가배팅 성과 분석하기\n\n00:00 종가배팅 원리 알아보기\n02:52 종가배팅의 패턴을 찾자\n08:04 종가배팅 종목 고르는 방법\n19:08 NXT가 있는데 종가배팅은 그럼 언제 해야하는 건가?\n19:56 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00059호(26.01.16~27.01.15)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수, 종가배팅이 답인 이유!", 1203, false, "2mDQr3dUTCI", "https://www.youtube.com/watch?v=2mDQr3dUTCI", "/downloads/포모의 HTS 로그인2/2026-01-16 직장인 필수, 종가배팅이 답인 이유!/직장인 필수, 종가배팅이 답인 이유! [2mDQr3dUTCI].mp4", false, 6, ~U[2026-01-16 09:00:06Z]] 03:19:37.225 [debug] QUERY OK source="sources" db=0.2ms idle=234.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.226 [debug] QUERY OK source="media_items" db=0.4ms idle=105.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-02 09:01:25Z], 6] 03:19:37.227 [debug] QUERY OK source="media_items" db=0.6ms idle=105.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "여러가지 조건을 동시에 만족하는 자동주문법", "80335535-2adf-4b4b-81be-ed3e12321738", false, 1124, false, "qwWeJE9Uzp4", "https://www.youtube.com/watch?v=qwWeJE9Uzp4", 17, "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", false, false, 6, [], 1, ~U[2026-01-02 09:01:25Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#자동매매 #자동감시주문 #매도시세감시\n\n⚡오늘의 기능⚡\n특정 조건에 자동 매매하는 방법\n\n00:00 시작\n00:58 [0624] 자동감시주문\n04:00 2가지 이상 조건을 동시에 만족하는 자동주문 방법\n04:55 [0315] 매수시세 감시\n09:12 [0317] 매도시세 감시\n13:57 상한가 풀리기 직전 매도하기\n15:52 알림설정하기\n18:38 끝\n \n\n※키움증권 준법감시인 심사필 제25-02936호(26.01.02~27.01.01)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "여러가지 조건을 동시에 만족하는 자동주문법", 1124, false, "qwWeJE9Uzp4", "https://www.youtube.com/watch?v=qwWeJE9Uzp4", "/downloads/포모의 HTS 로그인2/2026-01-02 여러가지 조건을 동시에 만족하는 자동주문법/여러가지 조건을 동시에 만족하는 자동주문법 [qwWeJE9Uzp4].mp4", false, 6, ~U[2026-01-02 09:01:25Z]] 03:19:37.227 [debug] QUERY OK source="sources" db=0.1ms idle=105.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] 03:19:37.227 [debug] QUERY OK source="media_items" db=0.2ms idle=2.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-14 09:00:21Z], 6] 03:19:37.228 [debug] QUERY OK source="media_items" db=0.5ms idle=2.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "오늘 급등하는 주도주로 트레이딩하자", "d63efa34-f3c1-475f-aa38-3828d04f3f65", false, 1913, false, "C_UQnz3-1oM", "https://www.youtube.com/watch?v=C_UQnz3-1oM", 20, "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", false, false, 6, [], 1, ~U[2025-11-14 09:00:21Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#주도주 #단타 #눌림목매매\n\n⚡오늘의 기능⚡\n오늘 급등하는 주도주를 미리 찾자!\n\n※키움증권 준법감시인 심사필 제25-02694호(25.11.14~26.11.13)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "오늘 급등하는 주도주로 트레이딩하자", 1913, false, "C_UQnz3-1oM", "https://www.youtube.com/watch?v=C_UQnz3-1oM", "/downloads/포모의 HTS 로그인2/2025-11-14 오늘 급등하는 주도주로 트레이딩하자/오늘 급등하는 주도주로 트레이딩하자 [C_UQnz3-1oM].mp4", false, 6, ~U[2025-11-14 09:00:21Z]] 03:19:37.228 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.229 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-17 09:00:06Z], 6] 03:19:37.230 [debug] QUERY OK source="media_items" db=0.5ms idle=1.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", "70eb015e-6f99-474f-9728-cad5eb3a1358", false, 2462, false, "1_2-VnhSwVg", "https://www.youtube.com/watch?v=1_2-VnhSwVg", 21, "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", false, false, 6, [], 1, ~U[2025-10-17 09:00:06Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #비중조절\n\n⚡오늘의 기능⚡\n비중 조절 전략 수식 만들기\n\n※키움증권 준법감시인 심사필 제25-02446호(25.10.17~26.10.16)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2", 2462, false, "1_2-VnhSwVg", "https://www.youtube.com/watch?v=1_2-VnhSwVg", "/downloads/포모의 HTS 로그인2/2025-10-17 강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2/강세장에서 크게 벌고 약세장에서 조금 잃자! | 포모의 HTS 로그인2 [1_2-VnhSwVg].mp4", false, 6, ~U[2025-10-17 09:00:06Z]] 03:19:37.230 [debug] QUERY OK source="sources" db=0.1ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.230 [debug] QUERY OK source="media_items" db=0.2ms idle=1.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-03 09:01:03Z], 6] 03:19:37.231 [debug] QUERY OK source="media_items" db=0.5ms idle=1.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", "021dfa12-21a8-487c-82fb-6ab74d9af4d0", false, 1963, false, "_OoTXq95EmU", "https://www.youtube.com/watch?v=_OoTXq95EmU", 22, "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", false, false, 6, [], 1, ~U[2025-10-03 09:01:03Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #호가\n\n⚡오늘의 기능⚡\n호가창으로 트레이딩하기!\n\n※키움증권 준법감시인 심사필 제25-02343호(25.10.03~26.10.02)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2", 1963, false, "_OoTXq95EmU", "https://www.youtube.com/watch?v=_OoTXq95EmU", "/downloads/포모의 HTS 로그인2/2025-10-03 이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2/이 영상 하나로 호가 끝내자! | 포모의 HTS 로그인2 [_OoTXq95EmU].mp4", false, 6, ~U[2025-10-03 09:01:03Z]] 03:19:37.231 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.231 [debug] QUERY OK source="media_items" db=0.2ms idle=1.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 09:01:28Z], 6] 03:19:37.232 [debug] QUERY OK source="media_items" db=0.5ms idle=1.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", "001c7b88-539a-4999-83d4-dcfffa357ae6", false, 1715, false, "uEpQQiAI-xM", "https://www.youtube.com/watch?v=uEpQQiAI-xM", 23, "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", false, false, 6, [], 1, ~U[2025-09-12 09:01:28Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n관심종목 메모 활용하기!\n\n※키움증권 준법감시인 심사필 제25-02110호(25.09.12~26.09.11)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "관심종목 메모 활용 Tip | 포모의 HTS 로그인2", 1715, false, "uEpQQiAI-xM", "https://www.youtube.com/watch?v=uEpQQiAI-xM", "/downloads/포모의 HTS 로그인2/2025-09-12 관심종목 메모 활용 Tip | 포모의 HTS 로그인2/관심종목 메모 활용 Tip | 포모의 HTS 로그인2 [uEpQQiAI-xM].mp4", false, 6, ~U[2025-09-12 09:01:28Z]] 03:19:37.232 [debug] QUERY OK source="sources" db=0.1ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.233 [debug] QUERY OK source="media_items" db=0.1ms idle=1.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-08 09:01:40Z], 6] 03:19:37.233 [debug] QUERY OK source="media_items" db=0.4ms idle=1.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", "4588b07a-8b6a-41cc-b229-b558ebf7a301", false, 1827, false, "wbnk5XJUPAk", "https://www.youtube.com/watch?v=wbnk5XJUPAk", 24, "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", false, false, 6, [], 1, ~U[2025-08-08 09:01:40Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n외국인 vs 기관 vs 개인 수급보고 종목 찾기\n\n※키움증권 준법감시인 심사필 제25-01763호(25.08.08~26.08.07)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2", 1827, false, "wbnk5XJUPAk", "https://www.youtube.com/watch?v=wbnk5XJUPAk", "/downloads/포모의 HTS 로그인2/2025-08-08 돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2/돈의 흐름으로 종목 찾기! | 포모의 HTS 로그인2 [wbnk5XJUPAk].mp4", false, 6, ~U[2025-08-08 09:01:40Z]] 03:19:37.234 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.234 [debug] QUERY OK source="media_items" db=0.1ms idle=1.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-18 09:00:06Z], 6] 03:19:37.235 [debug] QUERY OK source="media_items" db=0.4ms idle=1.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", "dcb386e0-72d8-40f1-bf13-8fb689632d06", false, 1750, false, "19LkkcdjqbY", "https://www.youtube.com/watch?v=19LkkcdjqbY", 25, "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", false, false, 6, [], 1, ~U[2025-07-18 09:00:06Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n5초만에 종목의 끼 파악하기\n\n※키움증권 준법감시인 심사필 제25-01558호(25.07.18~26.07.17)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2", 1750, false, "19LkkcdjqbY", "https://www.youtube.com/watch?v=19LkkcdjqbY", "/downloads/포모의 HTS 로그인2/2025-07-18 단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2/단, 5초로 종목의 끼 파악하자! | 포모의 HTS 로그인2 [19LkkcdjqbY].mp4", false, 6, ~U[2025-07-18 09:00:06Z]] 03:19:37.235 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.235 [debug] QUERY OK source="media_items" db=0.1ms idle=1.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-04 09:00:37Z], 6] 03:19:37.236 [debug] QUERY OK source="media_items" db=0.5ms idle=1.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", "cf8a4e0d-884e-448a-8a92-364a9dce2700", false, 1848, false, "MMbBPNJuxqQ", "https://www.youtube.com/watch?v=MMbBPNJuxqQ", 26, "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", false, false, 6, [], 1, ~U[2025-07-04 09:00:37Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n추세, 돌파, 눌림 신호 만들기\n\n※키움증권 준법감시인 심사필 제25-01414호(25.07.04~26.07.03)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2", 1848, false, "MMbBPNJuxqQ", "https://www.youtube.com/watch?v=MMbBPNJuxqQ", "/downloads/포모의 HTS 로그인2/2025-07-04 이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2/이 신호가 뜨면, 바로 매수 타이밍! | 포모의 HTS 로그인2 [MMbBPNJuxqQ].mp4", false, 6, ~U[2025-07-04 09:00:37Z]] 03:19:37.236 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.237 [debug] QUERY OK source="media_items" db=0.2ms idle=1.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-20 09:00:29Z], 6] 03:19:37.238 [debug] QUERY OK source="media_items" db=0.6ms idle=1.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", "cd390d42-d68e-453c-b02f-e912c895247a", false, 2005, false, "KpLlQK-f0IE", "https://www.youtube.com/watch?v=KpLlQK-f0IE", 27, "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", false, false, 6, [], 1, ~U[2025-06-20 09:00:29Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n거래대금으로 상승 종목 시그널 찾기!\n\n※키움증권 준법감시인 심사필 제25-01279호(25.06.20~26.06.19)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2", 2005, false, "KpLlQK-f0IE", "https://www.youtube.com/watch?v=KpLlQK-f0IE", "/downloads/포모의 HTS 로그인2/2025-06-20 상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2/상승 시그널 종목 찾는 수식 만들기! | 포모의 HTS 로그인2 [KpLlQK-f0IE].mp4", false, 6, ~U[2025-06-20 09:00:29Z]] 03:19:37.238 [debug] QUERY OK source="sources" db=0.2ms idle=2.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.238 [debug] QUERY OK source="media_items" db=0.2ms idle=2.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-06 09:01:06Z], 6] 03:19:37.239 [debug] QUERY OK source="media_items" db=0.5ms idle=2.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", "036b3456-3ba3-4b05-8e69-94e1c626a294", false, 1544, false, "fEv0qCkgXKk", "https://www.youtube.com/watch?v=fEv0qCkgXKk", 28, "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", false, false, 6, [], 1, ~U[2025-06-06 09:01:06Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n나만의 관심종목 만드는 방법!\n\n※키움증권 준법감시인 심사필 제25-01159호(25.06.06~26.06.05)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2", 1544, false, "fEv0qCkgXKk", "https://www.youtube.com/watch?v=fEv0qCkgXKk", "/downloads/포모의 HTS 로그인2/2025-06-06 거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2/거래할 때 가장 중요한 종목 찾는 방법! | 포모의 HTS 로그인2 [fEv0qCkgXKk].mp4", false, 6, ~U[2025-06-06 09:01:06Z]] 03:19:37.239 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.240 [debug] QUERY OK source="media_items" db=0.1ms idle=1.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-23 10:00:55Z], 6] 03:19:37.240 [debug] QUERY OK source="media_items" db=0.5ms idle=1.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", "751d4aea-267a-4b64-851e-a60f28f810e6", false, 839, false, "Yx8Lcouocj4", "https://www.youtube.com/watch?v=Yx8Lcouocj4", 29, "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", false, false, 6, [], 1, ~U[2025-05-23 10:00:55Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n프리/애프터 마켓에 시간대 색칠하기\n\n※키움증권 준법감시인 심사필 제25-01038호(25.05.23~26.05.22)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2", 839, false, "Yx8Lcouocj4", "https://www.youtube.com/watch?v=Yx8Lcouocj4", "/downloads/포모의 HTS 로그인2/2025-05-23 대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2/대체거래소로 생기는 시세 왜곡! 극복하는 방법 | 포모의 HTS 로그인2 [Yx8Lcouocj4].mp4", false, 6, ~U[2025-05-23 10:00:55Z]] 03:19:37.240 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.241 [debug] QUERY OK source="media_items" db=0.1ms idle=1.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-09 09:01:06Z], 6] 03:19:37.241 [debug] QUERY OK source="media_items" db=0.4ms idle=1.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", "bcf1df1e-1542-4c66-be1d-dcec43693e91", false, 1697, false, "gXHrvwwZ7Yo", "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", 30, "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", false, false, 6, [], 1, ~U[2025-05-09 09:01:06Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 수식⚡\n이동평균선에 거래량까지 더한 VWAP 지표 만들기\n\n※키움증권 준법감시인 심사필 제25-00908호(25.05.09~26.05.08)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "당일 VWAP 지표만들기 | 포모의 HTS 로그인2", 1697, false, "gXHrvwwZ7Yo", "https://www.youtube.com/watch?v=gXHrvwwZ7Yo", "/downloads/포모의 HTS 로그인2/2025-05-09 당일 VWAP 지표만들기 | 포모의 HTS 로그인2/당일 VWAP 지표만들기 | 포모의 HTS 로그인2 [gXHrvwwZ7Yo].mp4", false, 6, ~U[2025-05-09 09:01:06Z]] 03:19:37.242 [debug] QUERY OK source="sources" db=0.0ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.242 [debug] QUERY OK source="media_items" db=0.1ms idle=1.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-25 09:01:24Z], 6] 03:19:37.243 [debug] QUERY OK source="media_items" db=0.5ms idle=1.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", "15c86cc7-8b4c-4091-8cff-c8f569e8019b", false, 1580, false, "rF7mWcz4scs", "https://www.youtube.com/watch?v=rF7mWcz4scs", 31, "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", false, false, 6, [], 1, ~U[2025-04-25 09:01:24Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢내 종목을 움직이는 주체는 과연 누구인가?\n\n※키움증권 준법감시인 심사필 제25-00819호(25.04.25~26.04.24)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다 / 자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다. / 미국주식 수수료[온라인0.25%, 오프라인0.50%] 이며 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 부과 등 매체별, 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고 / 증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능 \n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2", 1580, false, "rF7mWcz4scs", "https://www.youtube.com/watch?v=rF7mWcz4scs", "/downloads/포모의 HTS 로그인2/2025-04-25 내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2/내 종목을 움직이는 주체는 과연 누구인가? | 포모의 HTS 로그인2 [rF7mWcz4scs].mp4", false, 6, ~U[2025-04-25 09:01:24Z]] 03:19:37.243 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.243 [debug] QUERY OK source="media_items" db=0.2ms idle=1.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-11 10:00:21Z], 6] 03:19:37.244 [debug] QUERY OK source="media_items" db=0.6ms idle=1.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "시초가 매매 방법 | 포모의 HTS 로그인2", "1880d545-99b0-42aa-9cd7-2b435ceb2b7d", false, 1150, false, "ElW8L-3sRa8", "https://www.youtube.com/watch?v=ElW8L-3sRa8", 32, "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", false, false, 6, [], 1, ~U[2025-04-11 10:00:21Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#영웅전 #트레이딩 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢대체거래소 도입 이후, 시초가 매매하는 방법\n\n※키움증권 준법감시인 심사필 제25-00665호(25.04.04~26.04.05)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System)입니다., 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "시초가 매매 방법 | 포모의 HTS 로그인2", 1150, false, "ElW8L-3sRa8", "https://www.youtube.com/watch?v=ElW8L-3sRa8", "/downloads/포모의 HTS 로그인2/2025-04-11 시초가 매매 방법 | 포모의 HTS 로그인2/시초가 매매 방법 | 포모의 HTS 로그인2 [ElW8L-3sRa8].mp4", false, 6, ~U[2025-04-11 10:00:21Z]] 03:19:37.244 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.245 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-02-07 09:00:02Z], 6] 03:19:37.247 [debug] QUERY OK source="media_items" db=1.9ms idle=1.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", "32fe323d-09a5-41c8-bd05-f45189679821", false, 1083, false, "0O--nwabj2w", "https://www.youtube.com/watch?v=0O--nwabj2w", 33, "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", false, false, 6, [], 1, ~U[2025-02-07 09:00:02Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#영웅전 #실전투자대회 #포모\n\n증권사 최초 증권맨과 HTS 장인이 직접 실전트레이딩으로\n시장에 나와있는 모든 기법들을 검증한다! \n\n📢영웅전 우승자들의 스윙 종목 고르는 방법\n(※급등주 찾는 조건검색식이 있습니다※)\n\n❌김대리 조건검색식\n[한 달 이내 15%이상 급등했던 재료주 찾기]\n1. 기간내 등락률 : 0봉전 20본 내에서 전일종가대비 15% 이상\n2. 5일평균 거래대금 순위 상위 200\n\n❌포모 조건검색식\n[돈이 많이 모이는 종목 찾기]\n1. 신고가 : [일]0봉전 종가가 15분이내 240봉 신고가 발생\n2. 기간내 거래대금 : [일] 0봉전 15봉이내 거래대금 50000이상 1회 이상\n\n00:00 시작\n00:20 오늘의 주제\n01:29 김개미 대리 매매전략\n05:42 포모 매매전략\n12:38 매매에 대한 생각\n17:53 끝\n\n※키움증권 준법감시인 심사필 제25-00250호(25.02.07~26.02.06)\n\n※투자 전 설명 청취 및 상품설명서·(간이)투자설명서·집합투자규약 등 필독/이 금융상품은 예금자보호법에 따라 보호되지 않습니다/자산가격 변동, 환율변동 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속/ 주식거래 수수료 0.015%, 미국주식 수수료[온라인0.25%, 오프라인0.50%]/매체별, 미국주식 매도시 0.00278% SEC Fee (최소금액 $0.01) 등 국가별 세금 및 기타수수료에 대한 자세한 사항 등 홈페이지 참고/증권거래비용 등 추가발생 가능/투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음/과거의 실적이 미래의 수익률 보장하지 않음/레버리지ETF는 원금 손실 크게 발생 가능/해당 내용은 조사분석자료에 기반했으나 그 정확성을 보장할 수 없음\n\n※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음/본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2", 1083, false, "0O--nwabj2w", "https://www.youtube.com/watch?v=0O--nwabj2w", "/downloads/포모의 HTS 로그인2/2025-02-07 영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2/영웅전 우승자들의 스윙 종목 고르는 방법 | 포모의 HTS 로그인2 [0O--nwabj2w].mp4", false, 6, ~U[2025-02-07 09:00:02Z]] 03:19:37.247 [debug] QUERY OK source="sources" db=0.1ms idle=4.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.248 [debug] QUERY OK source="media_items" db=0.3ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-13 09:00:17Z], 6] 03:19:37.249 [debug] QUERY OK source="media_items" db=0.6ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "분봉 차트에서 3일 이동평균선 보는 방법", "65dff88a-5e42-4fc4-a28c-ffd681d6a6e2", false, 1164, false, "CrqYtu_QeDc", "https://www.youtube.com/watch?v=CrqYtu_QeDc", 40, "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", false, false, 6, [], 1, ~U[2026-02-13 09:00:17Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#이동평균선 #차트분석 #수식조건\n\n⚡오늘의 기능⚡\n분봉 차트에서 3일 이동평균선 보는 방법!\n\n00:00 이동평균선\n02:35 연습! 분봉 차트에 3일 이동평균선 넣기\n08:02 분봉 차트에 5일 이동평균선 넣기\n09:32 분봉 차트에 이동평균선 밴드 그려주기\n19:19 끝\n\n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제26-00192호(26.02.13~27.02.12)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "분봉 차트에서 3일 이동평균선 보는 방법", 1164, false, "CrqYtu_QeDc", "https://www.youtube.com/watch?v=CrqYtu_QeDc", "/downloads/포모의 HTS 로그인2/2026-02-13 분봉 차트에서 3일 이동평균선 보는 방법/분봉 차트에서 3일 이동평균선 보는 방법 [CrqYtu_QeDc].mp4", false, 6, ~U[2026-02-13 09:00:17Z]] 03:19:37.249 [debug] QUERY OK source="sources" db=0.1ms idle=4.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.249 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-06 05:39:08Z], 6] 03:19:37.250 [debug] QUERY OK source="media_items" db=0.5ms idle=2.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수 시청! 회사에서 단타하자", "4a3259d5-53bd-4a19-a74c-aebe0565d29d", false, 1268, false, "LIxAUew7IQg", "https://www.youtube.com/watch?v=LIxAUew7IQg", 41, "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", false, false, 6, [], 1, ~U[2026-10-06 05:39:08Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#조건검색 #단타 #주도주\n\n⚡오늘의 기능⚡\n영웅문S# 으로 간단하고 쉽게 만드는 조건 검색식\n\n※키움증권 준법감시인 심사필 제25-02777호(25.11.28~26.11.27)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "직장인 필수 시청! 회사에서 단타하자", 1268, false, "LIxAUew7IQg", "https://www.youtube.com/watch?v=LIxAUew7IQg", "/downloads/포모의 HTS 로그인2/2026-10-06 직장인 필수 시청! 회사에서 단타하자/직장인 필수 시청! 회사에서 단타하자 [LIxAUew7IQg].mp4", false, 6, ~U[2026-10-06 05:39:08Z]] 03:19:37.250 [debug] QUERY OK source="sources" db=0.1ms idle=2.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.251 [debug] QUERY OK source="media_items" db=0.1ms idle=1.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-22 09:00:57Z], 6] 03:19:37.251 [debug] QUERY OK source="media_items" db=0.5ms idle=1.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "기업분석 요약 노트 | 포모의 HTS 로그인2", "29deaad9-3502-4571-af3f-9992c8f41d20", false, 2140, false, "X2s_sk20YM4", "https://www.youtube.com/watch?v=X2s_sk20YM4", 42, "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", false, false, 6, [], 1, ~U[2025-08-22 09:00:57Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#키움증권 #트레이딩 #수식\n\n⚡오늘의 기능⚡\n사업 보고서 읽어보고 시장 트렌드 체크해 매매 시나리오 만들기\n\n※키움증권 준법감시인 심사필 제25-01897호(25.08.22~26.08.21)\n※투자 전 설명 청취 및 상품설명서 필독 / 이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다. / 자산가격변동 등에 따른 원금손실(0~100%) 발생가능 및 투자자 귀속 / 주식거래 시 수수료는 0.015%(KRX), 0.0145%(NXT)이며, 기타 자세한 사항은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:Alternative Trading System)입니다. / 투자판단의 책임은 본인에게 있으며, 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음", "기업분석 요약 노트 | 포모의 HTS 로그인2", 2140, false, "X2s_sk20YM4", "https://www.youtube.com/watch?v=X2s_sk20YM4", "/downloads/포모의 HTS 로그인2/2025-08-22 기업분석 요약 노트 | 포모의 HTS 로그인2/기업분석 요약 노트 | 포모의 HTS 로그인2 [X2s_sk20YM4].mp4", false, 6, ~U[2025-08-22 09:00:57Z]] 03:19:37.252 [debug] QUERY OK source="sources" db=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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.252 [debug] QUERY OK source="media_items" db=0.2ms idle=1.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-07 01:15:31Z], 6] 03:19:37.253 [debug] QUERY OK source="media_items" db=1.1ms idle=1.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다. 한국거래소(KRX) 수수료 한시적 인하 기간('25.12.15~'26.02.13)에는 주식 거래 수수료가 0.0145%입니다. 해당 기간 이후 수수료가 변동될 수 있습니다. / 총보수, 증권거래비용 등 추가발생 가능 / ETF 거래수수료 별도 발생 가능 / 레버리지ETF는 원금 손실 크게 발생 가능 / 레버리지펀드의 기간 수익률은 추종하는 기초자산의 일간 수익률과 차이 발생 가능 / ETF 취득하시기 전에 투자대상, 보수·수수료 및 환매방법 등에 관하여 (간이)투자설명서를 반드시 읽어보시기 바랍니다. ※투자판단의 책임은 본인에게 있으며 어떠한 경우에도 콘텐츠의 내용이 법적책임소재의 증빙자료로 사용할 수 없음 / 본 콘텐츠는 당사의 저작물이며 복사, 전송, 변형될 수 없음\n\nTIGER반도체Top10 \n(총보수*비용 0.51%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 452,750 ) \nKODEX반도체\n(총보수*비용 0.4625%, 위험등급 1등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.0125%, 직전회계연도 증권거래비용 398,932)\nKODEX AI 반도체\n(총보수*비용 0.0584%, 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0584%, 직전회계연도 증권거래비용 259,038)\nKIWOOM K-반도체 북미 공급\n(총보수*비용 0.8274%, 위험등급 2등급, 집합투자 0.44%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.3374%, 직전회계연도 증권거래비용 5,699) \nTIMEFOLIO K바이오액티브\n(총보수*비용 0.83%, 위험등급 2등급, 집합투자 0.69%, 지정참가 0.05%, 신탁업자 0.03%, 일반사무 0.03%, 기타 0.03%, 직전회계연도 증권거래비용 0.28)\nKOACT AI 인프라 액티브 \n(총보수*비용 0.5628%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.05%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0628%, 직전회계연도 증권거래비용 116,255) \nKOACT K 수출 핵심 기업\n(총보수*비용 0.5595%, 위험등급 2등급, 집합투자 0.45%, 지정참가 0.01%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0595%, 직전회계연도 증권거래비용 470,399) \nKODEX 자동차 ETF \n(총보수*비용 0.4629% 위험등급 2등급, 집합투자 0.389%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.04%, 기타 0.129%, 직전회계연도 증권거래비용 153,216)\nKODEX 2차전지산업\n(총보수*비용 0.5515% 위험등급 1등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.1015%, 직전회계연도 증권거래비용 760,278)\nTIGER 바이오 TOP10 \n(총보수*비용 0.44% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.04%, 직전회계연도 증권거래비용 195,746)\nKODEX AI전력핵심설비 \n(총보수*비용 0.4586% 위험등급 2등급, 집합투자 0.359%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.01%, 기타 0.0686%, 직전회계연도 증권거래비용 281,859) \nACE 원자력TOP10 \n(총보수*비용 0.3530% 위험등급 2등급, 집합투자 0.2600%, 지정참가 0.0100%, 신탁업자 0.0150%, 일반사무 0.0150%, 기타 0.0530%, 직전회계연도 증권거래비용 281,859) \nTIGER 조선TOP10 \n(총보수*비용 0.41% 위험등급 2등급, 집합투자 0.309%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.06%, 직전회계연도 증권거래비용 0.0559) \nKODEX K방산 TOP10 \n(총보수*비용 0.5224%, 위험등급 2등급, 집합투자 0.409%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0724%, 직전회계연도 증권거래비용 81,199)\nKODEX 로봇 액티브 \n(총보수*비용 0.5689% 위험등급 2등급, 집합투자 0.459%, 지정참가 0.001%, 신탁업자 0.02%, 일반사무 0.02%, 기타 0.0689%, 직전회계연도 증권거래비용 53,675)", "ETF로 주도주 찾기", "ef4cb5a6-6967-42d3-979f-6580b3de205a", false, 2039, false, "Bh-45IJWWgk", "https://www.youtube.com/watch?v=Bh-45IJWWgk", 43, "/downloads/포모의 HTS 로그인2/2026-10-07 ETF로 주도주 찾기/ETF로 주도주 찾기 [Bh-45IJWWgk].mp4", false, false, 6, [], 1, ~U[2026-10-07 01:15:31Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#ETF #주도주 #종목찾기\n\n⚡오늘의 기능⚡\nETF로 시장흐름 체크해 주도주 찾자!\n\n00:00 시작\n00:12 ETF를 하는 이유\n03:33 HTS에서 ETF 팁 알아보기\n08:22 ETF 안에서 구성종목 찾아보기\n14:00 ETF 구성종목 관심종목에 담기\n15:32 ETF에서 주도주 찾는 Tip\n22:35 ETF로 시장 방향성 알아보기\n30:31 ETF로 트레이딩 전략 짜는 방법\n33:53 끝\n \n본 영상은 특정 투자 판단에 대한 성과를 보장하거나, \n투자 판단에 대한 확정적인 의견을 제시하는 것이 아닙니다.\n투자 판단에 대한 최종 책임은 투자자에게 있습니다.\n\n※키움증권 준법감시인 심사필 제25-02892호(25.12.19~26.12.18)\n※투자 전 설명청취 및 상품설명서·(간이)투자설명서·집합투자규약 필독 / 주식 및 ETF, 집합투자증권은 예금자보호법에 따라 보호되지 않습니다 / 주식 및 ETF, 집합투자증권은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따른 원금손실(0~100%) 발생 가능 및 투자자 귀속 / 투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있음 / 과거의 실적이 미래의 수익률 보장하지 않음 /국내주식거래 시 수수료0.01 (truncated) 03:19:37.254 [debug] QUERY OK source="sources" db=0.1ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 03:19:37.255 [debug] QUERY OK source="media_items" db=0.4ms idle=2.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-10-16 09:00:15Z], 6] 03:19:37.256 [debug] QUERY OK source="media_items" db=0.8ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","prevent_download","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#수식관리자 #지지선 #영웅문4\n\n⚡오늘의 기능⚡\n특정 조건 지점을 기준으로 라인 표현하기\n\n00:00 특정 조건 지점을 기준으로 라인 표현하기 (ValueWhen)\n00:32 ValueWhen 기본 구조 이해하기\n03:05 거래대금 1,000억, 등락률 10% 이상 기준봉 추척\n11:53 20일 평균 거래량 대비 급증 캔들 지지선 \n17:35 캔들의 고가~저가 구간을 색상으로 음영 밴드 만들기\n21:34 20일 이동평균선 상향돌파 지지선\n26:30 다음영상\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01560호(26.10.16~27.10.15)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 터진 캔들에 지지선 자동으로 넣기", "36df8fd1-c3bc-45ed-8382-faffa70a3e7d", false, 1597, false, "v7WHgX5FR9o", "https://www.youtube.com/watch?v=v7WHgX5FR9o", 44, "/downloads/포모의 HTS 로그인2/2026-10-16 거래량 터진 캔들에 지지선 자동으로 넣기/거래량 터진 캔들에 지지선 자동으로 넣기 [v7WHgX5FR9o].mp4", false, false, 6, [], 1, ~U[2026-10-16 09:00:15Z], ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], "#수식관리자 #지지선 #영웅문4\n\n⚡오늘의 기능⚡\n특정 조건 지점을 기준으로 라인 표현하기\n\n00:00 특정 조건 지점을 기준으로 라인 표현하기 (ValueWhen)\n00:32 ValueWhen 기본 구조 이해하기\n03:05 거래대금 1,000억, 등락률 10% 이상 기준봉 추척\n11:53 20일 평균 거래량 대비 급증 캔들 지지선 \n17:35 캔들의 고가~저가 구간을 색상으로 음영 밴드 만들기\n21:34 20일 이동평균선 상향돌파 지지선\n26:30 다음영상\n\n본 영상은 투자 판단에 참고할 수 있는 정보를 제공하나, 제공되는 정보의 정확성이나 완전성은 보장되지 않습니다. 개별 종목의 주가는 시장 상황 외에도 다양한 요인의 영향을 받으며, 지수의 흐름과 반대로 움직일 수 있습니다. 투자에 따른 손실은 투자자 본인에게 귀속되니, 투자 목적과 위험 감수 능력을 고려하여 신중하게 판단하시기 바랍니다.\n\n※키움증권 준법감시인 심사필 제26-01560호(26.10.16~27.10.15)\n※투자자는 키움증권으로부터 금융투자상품(주식)에 대하여 충분한 설명을 받을 권리가 있으며 투자 전 상품설명서 등을 반드시 읽어보시기 바랍니다\n※이 금융상품(주식)은 예금자보호법에 따라 보호되지 않습니다.\n※금융투자상품(주식)은 자산가격 변동, 환율 변동, 신용등급 하락 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며 그 손실은 투자자에게 귀속됩니다.\n※투자광고 시점(또는 기간) 및 미래에는 이와 다를 수 있으며, 과거의 실적이 미래의 수익률을 보장하는 것은 아닙니다.\n※주식거래 시 수수료0.015%(KRX), 0.0145%(NXT)이며, 기타 수수료에 관련된 자세한 사항 등 당사 홈페이지를 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS: Alternative Trading System) 입니다.\n※당사 콘텐츠는 개별종목에 대한 추천 아니며 투자판단의 최종 책임은 고객 본인에게 있습니다. 어떠한 경우에도 콘텐츠에서 제공되는 내용이 고객의 투자결과 대한 법적 책임소재의 증빙자료로 사용할 수 없습니다.\n※당사 콘텐츠는 투자자의 투자를 돕기 위해 제작된 당사의 저작물이며 어떠한 경우에도 복사, 전송, 변형될 수 없습니다.", "거래량 터진 캔들에 지지선 자동으로 넣기", 1597, false, "v7WHgX5FR9o", "https://www.youtube.com/watch?v=v7WHgX5FR9o", "/downloads/포모의 HTS 로그인2/2026-10-16 거래량 터진 캔들에 지지선 자동으로 넣기/거래량 터진 캔들에 지지선 자동으로 넣기 [v7WHgX5FR9o].mp4", false, 6, ~U[2026-10-16 09:00:15Z]] 03:19:37.256 [debug] QUERY OK source="sources" db=0.2ms idle=4.0ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z], 6] 03:19:37.257 [debug] QUERY OK source="media_items" db=0.3ms idle=3.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:19:37.257 [debug] QUERY OK source="media_items" db=0.2ms idle=2.9ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 03:19:37.257 [debug] QUERY OK source="media_items" db=0.0ms idle=2.6ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 03:19:37.258 [debug] QUERY OK source="tasks" db=0.1ms idle=1.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16365, 6, ~U[2026-10-18 03:19:37Z], ~U[2026-10-18 03:19:37Z]] 03:19:37.258 [info] {"args":{"id":6},"id":16333,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":64330920,"event":"job:stop","queue_time":340353,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 03:19:39.222 [info] {"source":"oban","duration":1350,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:20:00.340 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:20:09.224 [info] {"source":"oban","duration":1205,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:20:39.226 [info] {"source":"oban","duration":1122,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:21:00.341 [info] {"source":"oban","duration":202,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:21:09.227 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:21:39.229 [info] {"source":"oban","duration":1224,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:22:00.342 [info] {"source":"oban","duration":244,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:22:09.230 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:22:39.231 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:23:00.343 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:23:09.233 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:23:39.234 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:24:00.344 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:24:09.236 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:24:39.239 [info] {"source":"oban","duration":1340,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:25:00.345 [info] {"source":"oban","duration":168,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:25:09.240 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:25:39.241 [info] {"source":"oban","duration":657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:26:00.346 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:26:09.242 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:26:39.244 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:27:00.347 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:27:09.246 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:27:29.730 [info] GET / 03:27:29.731 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:27:29.731 [debug] QUERY OK source="settings" db=0.1ms idle=1401.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:27:29.731 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1401.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:27:29.731 [debug] QUERY OK source="sources" db=0.0ms idle=1401.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:27:29.739 [debug] QUERY OK source="media_items" db=8.0ms idle=1254.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:27:29.742 [debug] QUERY OK source="media_items" db=1.9ms idle=261.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:27:29.742 [debug] QUERY OK source="settings" db=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 [] 03:27:29.742 [debug] QUERY OK source="settings" db=0.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 [] 03:27:29.743 [debug] QUERY OK source="settings" db=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 [] 03:27:29.743 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 03:27:29.745 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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)) [] 03:27:29.745 [debug] QUERY OK source="media_items" db=0.3ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:27:29.745 [debug] QUERY OK source="sources" db=0.1ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:27:29.754 [debug] QUERY OK source="media_items" db=8.2ms idle=3.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"))) [] 03:27:29.756 [debug] QUERY OK source="media_items" db=1.2ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:27:29.757 [debug] QUERY OK source="sources" db=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 (?,?)) [7, 3] 03:27:29.758 [info] Sent 200 in 27ms 03:27:29.774 [info] GET / 03:27:29.774 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:27:29.774 [debug] QUERY OK source="settings" db=0.2ms idle=29.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:27:29.774 [debug] QUERY OK source="media_profiles" db=0.0ms idle=28.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:27:29.775 [debug] QUERY OK source="sources" db=0.0ms idle=20.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:27:29.777 [debug] QUERY OK source="media_items" db=2.0ms idle=18.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:27:29.778 [debug] QUERY OK source="media_items" db=1.0ms idle=20.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:27:29.779 [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 [] 03:27:29.779 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:27:29.779 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:27:29.780 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 03:27:29.781 [debug] QUERY OK source="media_items" db=1.0ms idle=1.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)) [] 03:27:29.782 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 03:27:29.782 [debug] QUERY OK source="sources" db=0.2ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:27:29.785 [debug] QUERY OK source="media_items" db=1.9ms idle=3.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"))) [] 03:27:29.786 [debug] QUERY OK source="media_items" db=1.0ms 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 INNER JOIN "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] 03:27:29.786 [debug] QUERY OK source="sources" db=0.1ms idle=5.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:27:29.787 [info] Sent 200 in 13ms 03:27:39.247 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:27:50.708 [info] GET / 03:27:50.708 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:27:50.709 [debug] QUERY OK source="settings" db=0.2ms idle=1378.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:27:50.709 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1379.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:27:50.709 [debug] QUERY OK source="sources" db=0.0ms idle=1210.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:27:50.716 [debug] QUERY OK source="media_items" db=6.9ms idle=379.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:27:50.719 [debug] QUERY OK source="media_items" db=2.6ms idle=217.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:27:50.720 [debug] QUERY OK source="settings" db=0.1ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:27:50.720 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:27:50.720 [debug] QUERY OK source="settings" db=0.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 [] 03:27:50.721 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 03:27:50.722 [debug] QUERY OK source="media_items" db=1.1ms idle=2.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)) [] 03:27:50.723 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 03:27:50.723 [debug] QUERY OK source="sources" db=0.0ms 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" IN (?,?)) [4, 7] 03:27:50.732 [debug] QUERY OK source="media_items" db=8.1ms idle=3.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:27:50.734 [debug] QUERY OK source="media_items" db=1.4ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 03:27:50.735 [debug] QUERY OK source="sources" db=0.2ms 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 (?,?)) [7, 3] 03:27:50.736 [info] Sent 200 in 27ms 03:28:00.348 [info] {"source":"oban","duration":211,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:28:09.249 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:28:39.251 [info] {"source":"oban","duration":974,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:28:46.207 [info] GET / 03:28:46.207 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:28:46.207 [debug] QUERY OK source="settings" db=0.1ms idle=1877.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:28:46.208 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1877.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:28:46.208 [debug] QUERY OK source="sources" db=0.0ms idle=1878.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:28:46.211 [debug] QUERY OK source="media_items" db=3.2ms idle=1650.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:28:46.212 [debug] QUERY OK source="media_items" db=1.0ms idle=653.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:28:46.213 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:28:46.213 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:28:46.213 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:28:46.214 [debug] QUERY OK source="tasks" db=0.2ms idle=2.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"] 03:28:46.216 [debug] QUERY OK source="media_items" db=1.5ms idle=2.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)) [] 03:28:46.217 [debug] QUERY OK source="media_items" db=0.3ms idle=3.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] 03:28:46.217 [debug] QUERY OK source="sources" db=0.1ms idle=4.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:28:46.220 [debug] QUERY OK source="media_items" db=2.2ms idle=4.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:28:46.222 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=6.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] 03:28:46.222 [debug] QUERY OK source="sources" db=0.0ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:28:46.223 [info] Sent 200 in 16ms 03:28:46.603 [info] GET / 03:28:46.604 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:28:46.604 [debug] QUERY OK source="settings" db=0.1ms idle=386.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:28:46.604 [debug] QUERY OK source="media_profiles" db=0.0ms idle=383.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:28:46.604 [debug] QUERY OK source="sources" db=0.0ms idle=382.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:28:46.607 [debug] QUERY OK source="media_items" db=2.1ms idle=382.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:28:46.609 [debug] QUERY OK source="media_items" db=2.5ms idle=47.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:28:46.610 [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 [] 03:28:46.610 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:28:46.610 [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 [] 03:28:46.611 [debug] QUERY OK source="tasks" db=0.1ms idle=4.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"] 03:28:46.612 [debug] QUERY OK source="media_items" db=1.1ms idle=1.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)) [] 03:28:46.613 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 03:28:46.613 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [4, 7] 03:28:46.615 [debug] QUERY OK source="media_items" db=1.8ms idle=3.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"))) [] 03:28:46.616 [debug] QUERY OK source="media_items" db=0.8ms 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 INNER JOIN "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] 03:28:46.617 [debug] QUERY OK source="sources" db=0.0ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:28:46.617 [info] Sent 200 in 14ms 03:29:00.349 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:29:06.200 [info] GET / 03:29:06.201 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:29:06.201 [debug] QUERY OK source="settings" db=0.2ms idle=1871.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:29:06.201 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1871.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:29:06.201 [debug] QUERY OK source="sources" db=0.0ms idle=1871.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:29:06.204 [debug] QUERY OK source="media_items" db=2.7ms idle=1621.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:29:06.206 [debug] QUERY OK source="media_items" db=1.2ms idle=623.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:29:06.206 [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 [] 03:29:06.207 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:29:06.207 [debug] QUERY OK source="settings" db=0.1ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:29:06.208 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 03:29:06.209 [debug] QUERY OK source="media_items" db=1.1ms idle=1.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)) [] 03:29:06.209 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 03:29:06.210 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?)) [4, 7] 03:29:06.213 [debug] QUERY OK source="media_items" db=2.0ms idle=3.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"))) [] 03:29:06.214 [debug] QUERY OK source="media_items" db=1.0ms idle=5.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:29:06.214 [debug] QUERY OK source="sources" db=0.1ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:29:06.215 [info] Sent 200 in 15ms 03:29:09.253 [info] {"source":"oban","duration":942,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:29:39.255 [info] {"source":"oban","duration":731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:30:00.350 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:30:09.256 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:30:39.257 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:31:00.351 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:31:09.258 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:31:32.185 [info] GET / 03:31:32.185 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:31:32.186 [debug] QUERY OK source="settings" db=0.1ms idle=1855.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:31:32.186 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1856.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:31:32.186 [debug] QUERY OK source="sources" db=0.1ms idle=1856.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:31:32.194 [debug] QUERY OK source="media_items" db=8.0ms idle=1191.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:31:32.196 [debug] QUERY OK source="media_items" db=1.2ms idle=198.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:31:32.196 [debug] QUERY OK source="settings" db=0.1ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:31:32.196 [debug] QUERY OK source="settings" db=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 [] 03:31:32.197 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:31:32.197 [debug] QUERY OK source="tasks" db=0.1ms idle=3.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"] 03:31:32.199 [debug] QUERY OK source="media_items" db=1.2ms idle=2.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)) [] 03:31:32.199 [debug] QUERY OK source="media_items" db=0.3ms idle=2.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:31:32.200 [debug] QUERY OK source="sources" db=0.1ms 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" IN (?,?)) [4, 7] 03:31:32.202 [debug] QUERY OK source="media_items" db=1.8ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 03:31:32.203 [debug] QUERY OK source="media_items" db=0.9ms idle=5.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:31:32.204 [debug] QUERY OK source="sources" db=0.1ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:31:32.205 [info] Sent 200 in 19ms 03:31:39.260 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:32:00.352 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:32:09.261 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:32:38.719 [info] GET / 03:32:38.719 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:32:38.719 [debug] QUERY OK source="settings" db=0.1ms 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 [] 03:32:38.719 [debug] QUERY OK source="media_profiles" db=0.0ms idle=655.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:32:38.720 [debug] QUERY OK source="sources" db=0.1ms idle=385.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:32:38.722 [debug] QUERY OK source="media_items" db=1.9ms idle=386.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:32:38.724 [debug] QUERY OK source="media_items" db=2.1ms idle=388.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:32:38.724 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:32:38.724 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:32:38.725 [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 [] 03:32:38.726 [debug] QUERY OK source="tasks" db=0.2ms idle=3.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"] 03:32:38.727 [debug] QUERY OK source="media_items" db=1.2ms idle=2.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)) [] 03:32:38.728 [debug] QUERY OK source="media_items" db=0.3ms idle=3.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:32:38.728 [debug] QUERY OK source="sources" db=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" IN (?,?)) [4, 7] 03:32:38.731 [debug] QUERY OK source="media_items" db=1.9ms idle=3.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"))) [] 03:32:38.732 [debug] QUERY OK source="media_items" db=0.9ms 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 INNER JOIN "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] 03:32:38.732 [debug] QUERY OK source="sources" db=0.1ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:32:38.733 [info] Sent 200 in 14ms 03:32:39.262 [info] {"source":"oban","duration":878,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:33:00.353 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:33:09.264 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:33:39.266 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:34:00.354 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:34:09.267 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:34:39.268 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:35:00.355 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:35:09.270 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:35:39.272 [info] {"source":"oban","duration":1020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:36:00.356 [info] {"source":"oban","duration":223,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:36:09.274 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:36:39.276 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:37:00.357 [info] {"source":"oban","duration":272,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:37:09.278 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:37:31.786 [info] GET /auth 03:37:31.787 [debug] QUERY OK source="settings" db=0.1ms idle=1452.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:37:31.787 [debug] QUERY OK source="settings" db=0.1ms idle=1453.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:37:31.787 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 03:37:31.787 [error] #PID<0.91994.0> running PinchflatWeb.Endpoint (connection #PID<0.91993.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /auth ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /auth (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91993.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/auth", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 59668}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "accept-encoding" => "gzip, deflate, br, zstd", "accept-language" => "en-US,en;q=0.5", "host" => "pinchflat.moozuk.net", "pragma" => "no-cache", "priority" => "u=0, i", "sec-fetch-dest" => "document", "sec-fetch-mode" => "navigate", "sec-fetch-site" => "cross-site", "sec-gpc" => "1", "upgrade-insecure-requests" => "1", "user-agent" => "\"Mozilla/5.0 (iPhone; CPU iPhone OS 18_3_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3.1 Mobile/15E148 Safari/604.\"", "x-forwarded-for" => "89.37.63.236", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "89.37.63.236" }, 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.moozuk.net", method: "GET", owner: #PID<0.91994.0>, params: %{}, path_info: ["auth"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}, {"accept-encoding", "gzip, deflate, br, zstd"}, {"accept-language", "en-US,en;q=0.5"}, {"host", "pinchflat.moozuk.net"}, {"pragma", "no-cache"}, {"priority", "u=0, i"}, {"sec-fetch-dest", "document"}, {"sec-fetch-mode", "navigate"}, {"sec-fetch-site", "cross-site"}, {"sec-gpc", "1"}, {"upgrade-insecure-requests", "1"}, {"user-agent", "\"Mozilla/5.0 (iPhone; CPU iPhone OS 18_3_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3.1 Mobile/15E148 Safari/604.\""}, {"x-forwarded-for", "89.37.63.236"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "89.37.63.236"} ], request_path: "/auth", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-CfWSRXbibzVcABb_i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91993.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/auth", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 59668}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "accept-encoding" => "gzip, deflate, br, zstd", "accept-language" => "en-US,en;q=0.5", "host" => "pinchflat.moozuk.net", "pragma" => "no-cache", "priority" => "u=0, i", "sec-fetch-dest" => "document", "sec-fetch-mode" => "navigate", "sec-fetch-site" => "cross-site", "sec-gpc" => "1", "upgrade-insecure-requests" => "1", "user-agent" => "\"Mozilla/5.0 (iPhone; CPU iPhone OS 18_3_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3.1 Mobile/15E148 Safari/604.\"", "x-forwarded-for" => "89.37.63.236", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "89.37.63.236" }, 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 /auth (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.91993.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/auth", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 59668}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "accept-encoding" => "gzip, deflate, br, zstd", "accept-language" => "en-US,en;q=0.5", "host" => "pinchflat.moozuk.net", "pragma" => "no-cache", "priority" => "u=0, i", "sec-fetch-dest" => "document", "sec-fetch-mode" => "navigate", "sec-fetch-site" => "cross-site", "sec-gpc" => "1", "upgrade-insecure-requests" => "1", "user-agent" => "\"Mozilla/5.0 (iPhone; CPU iPhone OS 18_3_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3.1 Mobile/15E148 Safari/604.\"", "x-forwarded-for" => "89.37.63.236", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "89.37.63.236" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, (truncated) 03:37:39.280 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:38:00.358 [info] {"source":"oban","duration":219,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:38:09.281 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:38:39.283 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:39:00.359 [info] {"source":"oban","duration":203,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:39:09.285 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:39:39.286 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:40:00.360 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:40:09.288 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:40:39.290 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:41:00.361 [info] {"source":"oban","duration":258,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:41:09.292 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:41:39.293 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:42:00.362 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:42:09.294 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:42:30.182 [info] GET / 03:42:30.182 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 03:42:30.183 [debug] QUERY OK source="settings" db=0.2ms idle=1783.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:42:30.183 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1784.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 03:42:30.183 [debug] QUERY OK source="sources" db=0.0ms idle=1784.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 03:42:30.185 [debug] QUERY OK source="media_items" db=2.1ms idle=1496.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:42:30.187 [debug] QUERY OK source="media_items" db=1.3ms idle=497.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 03:42:30.187 [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 [] 03:42:30.187 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:42:30.188 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:42:30.188 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 03:42:30.190 [debug] QUERY OK source="media_items" db=1.1ms idle=1.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)) [] 03:42:30.190 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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] 03:42:30.190 [debug] QUERY OK source="sources" db=0.0ms 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" IN (?,?)) [4, 7] 03:42:30.193 [debug] QUERY OK source="media_items" db=1.9ms idle=3.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"))) [] 03:42:30.194 [debug] QUERY OK source="media_items" db=0.9ms idle=4.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "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] 03:42:30.195 [debug] QUERY OK source="sources" db=0.1ms idle=4.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [7, 3] 03:42:30.195 [info] Sent 200 in 13ms 03:42:39.296 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:43:00.363 [info] {"source":"oban","duration":181,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:43:09.298 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:43:39.300 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:44:00.364 [info] {"source":"oban","duration":265,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:44:09.302 [info] {"source":"oban","duration":657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:44:39.303 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:45:00.365 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:45:09.305 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:45:39.307 [info] {"source":"oban","duration":709,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:46:00.366 [info] {"source":"oban","duration":261,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:46:09.308 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:46:39.310 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:47:00.367 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:47:09.312 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:47:39.313 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:48:00.368 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:48:09.314 [info] {"source":"oban","duration":1004,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:48:39.316 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:49:00.369 [info] {"source":"oban","duration":237,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:49:09.318 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:49:39.320 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:50:00.370 [info] {"source":"oban","duration":195,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:50:09.321 [info] {"source":"oban","duration":818,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:50:39.323 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:51:00.371 [info] {"source":"oban","duration":189,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:51:09.325 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:51:39.326 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:52:00.372 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:52:04.698 [debug] Tzdata polling for update. 03:52:05.061 [debug] Tzdata polling shows the loaded tz database is up to date. 03:52:09.328 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:52:39.330 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:53:00.373 [info] {"source":"oban","duration":231,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:53:09.332 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:53:39.333 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:54:00.374 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:54:09.334 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:54:39.335 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:55:00.375 [info] {"source":"oban","duration":208,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:55:09.337 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:55:39.339 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:56:00.376 [info] {"source":"oban","duration":197,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:56:09.340 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:56:12.915 [info] GET /sources/7/media/50719 03:56:12.915 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50719", "source_id" => "7"} Pipelines: [:browser] 03:56:12.915 [debug] QUERY OK source="media_items" db=0.1ms idle=516.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" = ?) [50719] 03:56:12.916 [debug] QUERY OK source="sources" db=0.1ms idle=517.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] 03:56:12.916 [debug] QUERY OK source="tasks" db=0.1ms idle=517.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50719] 03:56:12.916 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=517.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16363] 03:56:12.916 [debug] QUERY OK source="settings" db=0.1ms idle=395.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:56:12.917 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:12.917 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:56:12.917 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:56:12.918 [info] Sent 200 in 3ms 03:56:13.107 [info] GET /sources/7/media/32687 03:56:13.107 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32687", "source_id" => "7"} Pipelines: [:browser] 03:56:13.107 [debug] QUERY OK source="media_items" db=0.1ms idle=191.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32687] 03:56:13.108 [debug] QUERY OK source="sources" db=0.1ms idle=191.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] 03:56:13.108 [debug] QUERY OK source="tasks" db=0.2ms idle=191.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32687] 03:56:13.108 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=191.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15088, 15574, 16073] 03:56:13.109 [debug] QUERY OK source="settings" db=0.0ms idle=191.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:56:13.109 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:13.109 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:13.110 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:56:13.110 [info] Sent 200 in 3ms 03:56:32.184 [info] GET /sources/7/media/32741 03:56:32.184 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32741", "source_id" => "7"} Pipelines: [:browser] 03:56:32.185 [debug] QUERY OK source="media_items" db=0.2ms idle=1786.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" = ?) [32741] 03:56:32.185 [debug] QUERY OK source="tasks" db=0.1ms idle=1786.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32741] 03:56:32.186 [debug] QUERY OK source="sources" db=0.3ms idle=1786.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] 03:56:32.186 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1645.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 (?,?,?)) [15089, 15575, 16074] 03:56:32.186 [debug] QUERY OK source="settings" db=0.1ms idle=645.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:56:32.187 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:32.187 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:56:32.187 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:56:32.188 [info] Sent 200 in 3ms 03:56:32.390 [info] GET /sources/7/media/32682 03:56:32.390 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32682", "source_id" => "7"} Pipelines: [:browser] 03:56:32.390 [debug] QUERY OK source="media_items" db=0.3ms idle=204.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" = ?) [32682] 03:56:32.391 [debug] QUERY OK source="tasks" db=0.2ms idle=204.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32682] 03:56:32.391 [debug] QUERY OK source="sources" db=0.2ms idle=203.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] 03:56:32.391 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=204.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15087, 15573, 16072] 03:56:32.392 [debug] QUERY OK source="settings" db=0.0ms idle=204.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:56:32.392 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:32.392 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:32.393 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:56:32.393 [info] Sent 200 in 3ms 03:56:39.342 [info] {"source":"oban","duration":1084,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:56:40.423 [info] GET /sources/3/media/47311 03:56:40.423 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47311", "source_id" => "3"} Pipelines: [:browser] 03:56:40.423 [debug] QUERY OK source="media_items" db=0.2ms idle=1024.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" = ?) [47311] 03:56:40.424 [debug] QUERY OK source="sources" db=0.2ms idle=1024.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:56:40.424 [debug] QUERY OK source="tasks" db=0.4ms idle=1024.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47311] 03:56:40.424 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=875.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?,?,?,?,?,?,?,?,?)) [15755, 16007, 16044, 16109, 16149, 16183, 16214, 16245, 16287, 16325, 16359] 03:56:40.425 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:40.425 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:40.425 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:40.426 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:56:40.427 [info] Sent 200 in 4ms 03:56:40.621 [info] GET /sources/7/media/50510 03:56:40.621 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50510", "source_id" => "7"} Pipelines: [:browser] 03:56:40.621 [debug] QUERY OK source="media_items" db=0.2ms idle=196.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" = ?) [50510] 03:56:40.622 [debug] QUERY OK source="tasks" db=0.1ms idle=196.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50510] 03:56:40.622 [debug] QUERY OK source="sources" db=0.1ms idle=196.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:56:40.622 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=196.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16330] 03:56:40.622 [debug] QUERY OK source="settings" db=0.0ms idle=72.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:56:40.623 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:56:40.623 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:56:40.623 [debug] QUERY OK source="media_profiles" db=0.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] 03:56:40.624 [info] Sent 200 in 3ms 03:57:00.377 [info] {"source":"oban","duration":200,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:57:06.223 [info] GET /sources/7/media/50511 03:57:06.223 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50511", "source_id" => "7"} Pipelines: [:browser] 03:57:06.223 [debug] QUERY OK source="media_items" db=0.1ms idle=1824.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" = ?) [50511] 03:57:06.223 [debug] QUERY OK source="tasks" db=0.1ms idle=1824.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50511] 03:57:06.223 [debug] QUERY OK source="sources" db=0.1ms idle=1647.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] 03:57:06.224 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=825.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16331] 03:57:06.224 [debug] QUERY OK source="settings" db=0.0ms idle=646.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:06.224 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:06.225 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:06.225 [debug] QUERY OK source="media_profiles" db=0.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] 03:57:06.226 [info] Sent 200 in 3ms 03:57:06.414 [info] GET /sources/4/media/50467 03:57:06.414 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50467", "source_id" => "4"} Pipelines: [:browser] 03:57:06.415 [debug] QUERY OK source="media_items" db=0.2ms idle=190.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" = ?) [50467] 03:57:06.415 [debug] QUERY OK source="tasks" db=0.1ms idle=190.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50467] 03:57:06.415 [debug] QUERY OK source="sources" db=0.2ms idle=190.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" = ?) [4] 03:57:06.415 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=190.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" = ?) [16328] 03:57:06.416 [debug] QUERY OK source="settings" db=0.0ms idle=190.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:06.416 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:57:06.416 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:06.417 [debug] QUERY OK source="media_profiles" db=0.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] 03:57:06.418 [info] Sent 200 in 3ms 03:57:09.343 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:57:15.498 [info] GET /settings 03:57:15.498 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 03:57:15.499 [debug] QUERY OK source="settings" db=0.3ms idle=1099.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:15.499 [debug] QUERY OK source="settings" db=0.0ms idle=1100.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:15.499 [debug] QUERY OK source="settings" db=0.0ms idle=1100.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:15.500 [debug] QUERY OK source="settings" db=0.0ms idle=1100.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:15.500 [info] Sent 200 in 2ms 03:57:15.699 [info] GET /sources/4/media/50678 03:57:15.699 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50678", "source_id" => "4"} Pipelines: [:browser] 03:57:15.699 [debug] QUERY OK source="media_items" db=0.2ms idle=200.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" = ?) [50678] 03:57:15.700 [debug] QUERY OK source="tasks" db=0.1ms idle=200.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50678] 03:57:15.700 [debug] QUERY OK source="sources" db=0.2ms idle=200.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" = ?) [4] 03:57:15.700 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=200.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16361] 03:57:15.700 [debug] QUERY OK source="settings" db=0.0ms idle=112.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:15.700 [debug] QUERY OK source="settings" db=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 [] 03:57:15.701 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:57:15.701 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:57:15.702 [info] Sent 200 in 3ms 03:57:32.169 [info] GET /sources 03:57:32.170 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 03:57:32.170 [debug] QUERY OK source="settings" db=0.1ms idle=771.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.171 [debug] QUERY OK source="settings" db=0.0ms idle=771.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.171 [debug] QUERY OK source="settings" db=0.0ms idle=772.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.171 [debug] QUERY OK source="settings" db=0.0ms idle=772.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.171 [debug] QUERY OK source="settings" db=0.0ms idle=567.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.177 [debug] QUERY OK source="sources" db=5.6ms idle=1.3ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 03:57:32.182 [debug] QUERY OK source="sources" db=4.2ms 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", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 03:57:32.184 [info] Sent 200 in 14ms 03:57:32.407 [info] GET /app_info 03:57:32.407 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 03:57:32.408 [debug] QUERY OK source="settings" db=0.1ms idle=236.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.408 [debug] QUERY OK source="settings" db=0.0ms idle=236.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.408 [debug] QUERY OK source="settings" db=0.0ms idle=236.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.409 [debug] QUERY OK source="settings" db=0.0ms idle=231.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.409 [debug] QUERY OK source="settings" db=0.0ms idle=226.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:32.409 [info] Sent 200 in 2ms 03:57:34.281 [info] GET /media_profiles 03:57:34.281 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 03:57:34.282 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1873.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", (SELECT count(ss0."id") AS "result" FROM "sources" AS ss0 WHERE (ss0."media_profile_id" = m0."id")) FROM "media_profiles" AS m0 WHERE (m0."marked_for_deletion_at" IS NULL) ORDER BY m0."name" [] 03:57:34.282 [debug] QUERY OK source="settings" db=0.1ms idle=1873.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:34.283 [debug] QUERY OK source="settings" db=0.0ms idle=1873.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:34.283 [debug] QUERY OK source="settings" db=0.0ms idle=1677.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:34.284 [info] Sent 200 in 2ms 03:57:34.470 [info] GET /sources/3 03:57:34.470 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 03:57:34.470 [debug] QUERY OK source="sources" db=0.1ms idle=863.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:57:34.470 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:57:34.471 [debug] QUERY OK source="tasks" db=0.3ms idle=188.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 03:57:34.471 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=188.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" = ?) [16360] 03:57:34.471 [debug] QUERY OK source="settings" db=0.0ms idle=188.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:34.472 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:34.472 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:57:34.473 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:57:34.473 [debug] QUERY OK source="media_items" db=0.5ms idle=1.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")))) [3] 03:57:34.474 [debug] QUERY OK source="media_items" db=0.7ms idle=2.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 ? [3, 10, 0] 03:57:34.475 [debug] QUERY OK source="sources" db=0.0ms idle=3.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] 03:57:34.475 [debug] QUERY OK source="media_items" db=0.1ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 03:57:34.476 [debug] QUERY OK source="media_items" db=0.3ms idle=2.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 03:57:34.476 [debug] QUERY OK source="sources" db=0.0ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:57:34.477 [debug] QUERY OK source="media_items" db=0.5ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [3] 03:57:34.478 [debug] QUERY OK source="media_items" db=0.6ms idle=2.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 03:57:34.479 [info] Sent 200 in 8ms 03:57:39.344 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:57:42.014 [info] GET /sources/4 03:57:42.014 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 03:57:42.014 [debug] QUERY OK source="sources" db=0.1ms idle=1615.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" = ?) [4] 03:57:42.015 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1615.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] 03:57:42.015 [debug] QUERY OK source="tasks" db=0.3ms idle=1616.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 03:57:42.015 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=1.4e3ms 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" = ?) [16362] 03:57:42.015 [debug] QUERY OK source="settings" db=0.0ms idle=399.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:42.016 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:42.016 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:57:42.017 [debug] QUERY OK source="sources" db=0.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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:57:42.017 [debug] QUERY OK source="media_items" db=0.3ms idle=1.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")))) [4] 03:57:42.018 [debug] QUERY OK source="media_items" db=0.5ms idle=1.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 03:57:42.018 [debug] QUERY OK source="sources" db=0.0ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:57:42.018 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 03:57:42.019 [debug] QUERY OK source="media_items" db=0.3ms idle=1.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 03:57:42.019 [debug] QUERY OK source="sources" db=0.0ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 03:57:42.020 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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"))))) [4] 03:57:42.020 [debug] QUERY OK source="media_items" db=0.3ms idle=1.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 03:57:42.021 [info] Sent 200 in 7ms 03:57:57.817 [info] GET /sources/7 03:57:57.817 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 03:57:57.818 [debug] QUERY OK source="sources" db=0.2ms idle=419.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] 03:57:57.818 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 03:57:57.819 [debug] QUERY OK source="tasks" db=0.3ms idle=420.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [7, "executing", "available", "scheduled", "retryable"] 03:57:57.819 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=420.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16364] 03:57:57.819 [debug] QUERY OK source="settings" db=0.0ms idle=186.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:57:57.820 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:57:57.820 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:57:57.821 [debug] QUERY OK source="sources" db=0.1ms idle=1.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:57:57.823 [debug] QUERY OK source="media_items" db=1.7ms idle=1.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 03:57:57.825 [debug] QUERY OK source="media_items" db=1.8ms idle=3.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 03:57:57.825 [debug] QUERY OK source="sources" db=0.0ms idle=5.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:57:57.826 [debug] QUERY OK source="media_items" db=0.8ms idle=5.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 03:57:57.829 [debug] QUERY OK source="media_items" db=2.5ms idle=5.7ms 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] 03:57:57.830 [debug] QUERY OK source="sources" db=0.1ms idle=7.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 03:57:57.832 [debug] QUERY OK source="media_items" db=1.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 ((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] 03:57:57.834 [debug] QUERY OK source="media_items" db=1.9ms 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 ? [7, 10, 0] 03:57:57.835 [info] Sent 200 in 17ms 03:58:00.378 [info] {"source":"oban","duration":222,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:58:01.319 [info] GET /sources/3/media/37712 03:58:01.319 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "37712", "source_id" => "3"} Pipelines: [:browser] 03:58:01.320 [debug] QUERY OK source="media_items" db=0.2ms idle=1920.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" = ?) [37712] 03:58:01.320 [debug] QUERY OK source="sources" db=0.1ms idle=1683.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 03:58:01.320 [debug] QUERY OK source="tasks" db=0.2ms idle=1921.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [37712] 03:58:01.320 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=942.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 (?,?,?,?)) [14777, 15300, 15838, 16324] 03:58:01.321 [debug] QUERY OK source="settings" db=0.0ms idle=683.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:58:01.321 [debug] QUERY OK source="settings" db=0.0ms 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 [] 03:58:01.322 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 03:58:01.322 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 03:58:01.323 [info] Sent 200 in 4ms 03:58:09.346 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:58:39.347 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:59:00.379 [info] {"source":"oban","duration":227,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 03:59:09.349 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:59:39.350 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:00:00.380 [info] {"source":"oban","duration":212,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:00:09.352 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:00:39.353 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:01:00.381 [info] {"source":"oban","duration":218,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:01:09.355 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:01:39.357 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:02:00.382 [info] {"source":"oban","duration":224,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:02:09.359 [info] {"source":"oban","duration":1027,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:02:39.361 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:03:00.383 [info] {"source":"oban","duration":206,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:03:09.362 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:03:39.364 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:04:00.384 [info] {"source":"oban","duration":198,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:04:09.366 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:04:39.367 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:05:00.385 [info] {"source":"oban","duration":220,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:05:09.369 [info] {"source":"oban","duration":936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:05:39.371 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:06:00.386 [info] {"source":"oban","duration":281,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:06:09.372 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:06:39.373 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:07:00.387 [info] {"source":"oban","duration":264,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:07:09.375 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:07:39.377 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:08:00.388 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:08:09.378 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:08:39.380 [info] {"source":"oban","duration":922,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:09:00.389 [info] {"source":"oban","duration":194,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:09:09.382 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:09:39.384 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:10:00.390 [info] {"source":"oban","duration":275,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:10:09.386 [info] {"source":"oban","duration":608,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:10:39.387 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:11:00.391 [info] {"source":"oban","duration":192,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:11:09.389 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:11:39.390 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:12:00.392 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:12:09.391 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:12:39.393 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:13:00.393 [info] {"source":"oban","duration":180,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:13:09.394 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:13:39.395 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:14:00.394 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:14:09.397 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:14:39.398 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:15:00.395 [info] {"source":"oban","duration":225,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:15:09.399 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:15:39.400 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:16:00.396 [info] {"source":"oban","duration":182,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:16:09.402 [info] {"source":"oban","duration":674,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:16:39.403 [info] {"source":"oban","duration":639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:17:00.397 [info] {"source":"oban","duration":196,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:17:09.404 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:17:39.405 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:18:00.398 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:18:09.406 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:18:39.408 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:19:00.399 [info] {"source":"oban","duration":190,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:19:09.409 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:19:39.410 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:20:00.400 [info] {"source":"oban","duration":187,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:20:09.412 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:20:39.414 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:21:00.401 [info] {"source":"oban","duration":201,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:21:09.416 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:21:39.418 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:22:00.402 [info] {"source":"oban","duration":191,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:22:09.420 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:22:39.422 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:23:00.403 [info] {"source":"oban","duration":210,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:23:09.424 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:23:39.425 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:24:00.404 [info] {"source":"oban","duration":235,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:24:09.426 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:24:39.427 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:25:00.405 [info] {"source":"oban","duration":323,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:25:09.428 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:25:39.430 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:26:00.406 [info] {"source":"oban","duration":236,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:26:09.432 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:26:39.433 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:27:00.407 [info] {"source":"oban","duration":233,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:27:09.435 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:27:39.437 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:27:47.692 [info] GET /sources/7/media/32621/edit 04:27:47.692 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32621", "source_id" => "7"} Pipelines: [:browser] 04:27:47.692 [debug] QUERY OK source="media_items" db=0.2ms idle=293.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" = ?) [32621] 04:27:47.693 [debug] QUERY OK source="settings" db=0.1ms idle=294.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:47.693 [debug] QUERY OK source="settings" db=0.0ms idle=294.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:47.694 [debug] QUERY OK source="settings" db=0.1ms idle=294.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:47.694 [info] Sent 200 in 2ms 04:27:48.192 [info] GET /sources/4/media/49006 04:27:48.192 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49006", "source_id" => "4"} Pipelines: [:browser] 04:27:48.193 [debug] QUERY OK source="media_items" db=0.2ms idle=733.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" = ?) [49006] 04:27:48.193 [debug] QUERY OK source="tasks" db=0.1ms idle=500.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49006] 04:27:48.193 [debug] QUERY OK source="sources" db=0.2ms idle=500.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" = ?) [4] 04:27:48.194 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=500.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16046] 04:27:48.194 [debug] QUERY OK source="settings" db=0.0ms idle=500.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:48.194 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:48.195 [debug] QUERY OK source="settings" db=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 [] 04:27:48.195 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:27:48.196 [info] Sent 200 in 4ms 04:27:48.693 [info] GET /sources/4/media/49006/edit 04:27:48.693 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49006", "source_id" => "4"} Pipelines: [:browser] 04:27:48.694 [debug] QUERY OK source="media_items" db=0.2ms idle=499.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" = ?) [49006] 04:27:48.694 [debug] QUERY OK source="settings" db=0.0ms idle=499.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:48.694 [debug] QUERY OK source="settings" db=0.0ms idle=499.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:48.694 [debug] QUERY OK source="settings" db=0.0ms idle=499.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:48.695 [info] Sent 200 in 2ms 04:27:49.195 [info] GET /sources/3/media/44634 04:27:49.195 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "44634", "source_id" => "3"} Pipelines: [:browser] 04:27:49.196 [debug] QUERY OK source="media_items" db=0.1ms idle=735.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" = ?) [44634] 04:27:49.196 [debug] QUERY OK source="sources" db=0.0ms idle=502.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:27:49.197 [debug] QUERY OK source="tasks" db=0.2ms idle=502.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [44634] 04:27:49.197 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=502.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" = ?) [15255] 04:27:49.197 [debug] QUERY OK source="settings" db=0.0ms idle=502.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:49.197 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:27:49.198 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:49.198 [debug] QUERY OK source="media_profiles" db=0.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] 04:27:49.199 [info] Sent 200 in 3ms 04:27:49.695 [info] GET /sources/3/media/44634/edit 04:27:49.695 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "44634", "source_id" => "3"} Pipelines: [:browser] 04:27:49.696 [debug] QUERY OK source="media_items" db=0.1ms idle=498.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" = ?) [44634] 04:27:49.696 [debug] QUERY OK source="settings" db=0.0ms idle=498.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:49.696 [debug] QUERY OK source="settings" db=0.0ms idle=498.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:49.697 [debug] QUERY OK source="settings" db=0.1ms idle=498.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:49.698 [info] Sent 200 in 2ms 04:27:50.195 [info] GET /sources/3/media/48347 04:27:50.195 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48347", "source_id" => "3"} Pipelines: [:browser] 04:27:50.196 [debug] QUERY OK source="media_items" db=0.2ms idle=734.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" = ?) [48347] 04:27:50.196 [debug] QUERY OK source="tasks" db=0.1ms idle=500.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48347] 04:27:50.196 [debug] QUERY OK source="sources" db=0.2ms idle=499.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:27:50.197 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=499.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" = ?) [15937] 04:27:50.197 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=500.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:50.198 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:50.198 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:50.198 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:27:50.199 [info] Sent 200 in 4ms 04:27:50.699 [info] GET /sources/3/media/48347/edit 04:27:50.699 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48347", "source_id" => "3"} Pipelines: [:browser] 04:27:50.699 [debug] QUERY OK source="media_items" db=0.2ms idle=501.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" = ?) [48347] 04:27:50.700 [debug] QUERY OK source="settings" db=0.0ms idle=502.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:50.700 [debug] QUERY OK source="settings" db=0.0ms idle=501.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:50.700 [debug] QUERY OK source="settings" db=0.0ms idle=501.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:50.701 [info] Sent 200 in 2ms 04:27:50.997 [info] GET /sources/7/media/50719/edit 04:27:50.997 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50719", "source_id" => "7"} Pipelines: [:browser] 04:27:50.998 [debug] QUERY OK source="media_items" db=0.2ms idle=535.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" = ?) [50719] 04:27:50.998 [debug] QUERY OK source="settings" db=0.1ms idle=298.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:50.998 [debug] QUERY OK source="settings" db=0.0ms idle=298.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:50.999 [debug] QUERY OK source="settings" db=0.0ms idle=298.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:51.000 [info] Sent 200 in 2ms 04:27:51.299 [info] GET /sources/4/media/48798 04:27:51.300 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48798", "source_id" => "4"} Pipelines: [:browser] 04:27:51.300 [debug] QUERY OK source="media_items" db=0.1ms idle=599.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" = ?) [48798] 04:27:51.301 [debug] QUERY OK source="sources" db=0.1ms idle=302.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" = ?) [4] 04:27:51.301 [debug] QUERY OK source="tasks" db=0.3ms idle=302.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48798] 04:27:51.301 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=302.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16009] 04:27:51.301 [debug] QUERY OK source="settings" db=0.0ms idle=302.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:51.301 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:27:51.302 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:51.302 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:27:51.304 [info] Sent 200 in 4ms 04:27:51.600 [info] GET /sources/3/media/45648 04:27:51.600 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "45648", "source_id" => "3"} Pipelines: [:browser] 04:27:51.601 [debug] QUERY OK source="media_items" db=0.1ms idle=299.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" = ?) [45648] 04:27:51.601 [debug] QUERY OK source="tasks" db=0.1ms idle=299.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [45648] 04:27:51.601 [debug] QUERY OK source="sources" db=0.1ms idle=299.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" = ?) [3] 04:27:51.602 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=299.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [15437] 04:27:51.602 [debug] QUERY OK source="settings" db=0.0ms idle=138.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:51.602 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:51.602 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:27:51.603 [debug] QUERY OK source="media_profiles" db=0.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] 04:27:51.604 [info] Sent 200 in 3ms 04:27:51.901 [info] GET /sources/4/media/48798/edit 04:27:51.901 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48798", "source_id" => "4"} Pipelines: [:browser] 04:27:51.902 [debug] QUERY OK source="media_items" db=0.2ms idle=299.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" = ?) [48798] 04:27:51.902 [debug] QUERY OK source="settings" db=0.1ms idle=300.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:51.903 [debug] QUERY OK source="settings" db=0.2ms idle=300.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:51.903 [debug] QUERY OK source="settings" db=0.1ms idle=300.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:51.904 [info] Sent 200 in 2ms 04:27:52.202 [info] GET /sources/3/media/45648/edit 04:27:52.202 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "45648", "source_id" => "3"} Pipelines: [:browser] 04:27:52.203 [debug] QUERY OK source="media_items" db=0.1ms idle=599.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" = ?) [45648] 04:27:52.203 [debug] QUERY OK source="settings" db=0.0ms idle=301.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:52.203 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:27:52.204 [debug] QUERY OK source="settings" db=0.0ms idle=300.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:52.204 [info] Sent 200 in 2ms 04:27:52.503 [info] GET /sources/7/media/32635 04:27:52.503 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32635", "source_id" => "7"} Pipelines: [:browser] 04:27:52.504 [debug] QUERY OK source="media_items" db=0.2ms idle=300.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" = ?) [32635] 04:27:52.504 [debug] QUERY OK source="tasks" db=0.1ms idle=301.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32635] 04:27:52.505 [debug] QUERY OK source="sources" db=0.2ms idle=300.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] 04:27:52.505 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=300.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 (?,?,?)) [15069, 15615, 16154] 04:27:52.505 [debug] QUERY OK source="settings" db=0.0ms idle=41.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:52.505 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:52.506 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:27:52.506 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:27:52.507 [info] Sent 200 in 3ms 04:27:52.729 [info] GET /sources/7/media/32682/edit 04:27:52.729 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32682", "source_id" => "7"} Pipelines: [:browser] 04:27:52.730 [debug] QUERY OK source="media_items" db=0.2ms idle=224.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" = ?) [32682] 04:27:52.730 [debug] QUERY OK source="settings" db=0.0ms idle=224.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:52.730 [debug] QUERY OK source="settings" db=0.0ms idle=224.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:52.731 [debug] QUERY OK source="settings" db=0.0ms idle=224.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:52.731 [info] Sent 200 in 2ms 04:27:52.955 [info] GET /sources/7/media/32633 04:27:52.955 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32633", "source_id" => "7"} Pipelines: [:browser] 04:27:52.956 [debug] QUERY OK source="media_items" db=0.2ms idle=449.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" = ?) [32633] 04:27:52.956 [debug] QUERY OK source="sources" db=0.1ms idle=225.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] 04:27:52.956 [debug] QUERY OK source="tasks" db=0.1ms idle=226.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32633] 04:27:52.957 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=226.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15067, 15558, 16058] 04:27:52.957 [debug] QUERY OK source="settings" db=0.0ms idle=226.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:52.957 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:27:52.958 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:27:52.958 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:27:52.959 [info] Sent 200 in 3ms 04:27:58.749 [info] GET /sources/7/media/32633/edit 04:27:58.749 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32633", "source_id" => "7"} Pipelines: [:browser] 04:27:58.750 [debug] QUERY OK source="media_items" db=0.2ms idle=350.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" = ?) [32633] 04:27:58.750 [debug] QUERY OK source="settings" db=0.0ms idle=351.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:58.750 [debug] QUERY OK source="settings" db=0.0ms idle=351.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:58.751 [debug] QUERY OK source="settings" db=0.1ms 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 [] 04:27:58.751 [info] Sent 200 in 2ms 04:27:58.970 [info] GET /sources/7/media/32687/edit 04:27:58.970 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32687", "source_id" => "7"} Pipelines: [:browser] 04:27:58.971 [debug] QUERY OK source="media_items" db=0.3ms idle=500.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" = ?) [32687] 04:27:58.971 [debug] QUERY OK source="settings" db=0.0ms idle=221.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:58.971 [debug] QUERY OK source="settings" db=0.0ms idle=220.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:58.971 [debug] QUERY OK source="settings" db=0.1ms idle=221.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:58.972 [info] Sent 200 in 2ms 04:27:59.180 [info] GET /sources/7/media/30995 04:27:59.180 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "30995", "source_id" => "7"} Pipelines: [:browser] 04:27:59.180 [debug] QUERY OK source="media_items" db=0.2ms idle=429.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" = ?) [30995] 04:27:59.181 [debug] QUERY OK source="tasks" db=0.1ms idle=210.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [30995] 04:27:59.181 [debug] QUERY OK source="sources" db=0.2ms idle=209.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] 04:27:59.181 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=210.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15060, 15551, 16051] 04:27:59.182 [debug] QUERY OK source="settings" db=0.1ms idle=210.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.182 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.183 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.183 [debug] QUERY OK source="media_profiles" db=0.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] 04:27:59.184 [info] Sent 200 in 3ms 04:27:59.318 [info] GET /sources/7/media/32741/edit 04:27:59.318 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32741", "source_id" => "7"} Pipelines: [:browser] 04:27:59.319 [debug] QUERY OK source="media_items" db=0.2ms idle=137.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" = ?) [32741] 04:27:59.319 [debug] QUERY OK source="settings" db=0.1ms idle=137.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.319 [debug] QUERY OK source="settings" db=0.0ms idle=137.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.320 [debug] QUERY OK source="settings" db=0.1ms idle=137.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.320 [info] Sent 200 in 2ms 04:27:59.398 [info] GET /sources/7/media/30995/edit 04:27:59.399 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "30995", "source_id" => "7"} Pipelines: [:browser] 04:27:59.399 [debug] QUERY OK source="media_items" db=0.2ms idle=215.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" = ?) [30995] 04:27:59.399 [debug] QUERY OK source="settings" db=0.0ms idle=80.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.400 [debug] QUERY OK source="settings" db=0.0ms idle=80.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.400 [debug] QUERY OK source="settings" db=0.1ms idle=80.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.401 [info] Sent 200 in 2ms 04:27:59.497 [info] GET /sources/7/media/32628 04:27:59.497 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32628", "source_id" => "7"} Pipelines: [:browser] 04:27:59.497 [debug] QUERY OK source="media_items" db=0.3ms idle=97.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" = ?) [32628] 04:27:59.498 [debug] QUERY OK source="tasks" db=0.1ms idle=98.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32628] 04:27:59.498 [debug] QUERY OK source="sources" db=0.3ms idle=98.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 04:27:59.499 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=98.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15066, 15557, 16057] 04:27:59.499 [debug] QUERY OK source="settings" db=0.0ms idle=27.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.499 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:27:59.499 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.500 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:27:59.501 [info] Sent 200 in 4ms 04:27:59.638 [info] GET /sources/3/media/49182/edit 04:27:59.638 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49182", "source_id" => "3"} Pipelines: [:browser] 04:27:59.639 [debug] QUERY OK source="media_items" db=0.2ms idle=139.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" = ?) [49182] 04:27:59.639 [debug] QUERY OK source="settings" db=0.0ms idle=140.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.639 [debug] QUERY OK source="settings" db=0.0ms idle=140.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.640 [debug] QUERY OK source="settings" db=0.0ms idle=140.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.640 [info] Sent 200 in 2ms 04:27:59.867 [info] GET /sources/7/media/32628/edit 04:27:59.867 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32628", "source_id" => "7"} Pipelines: [:browser] 04:27:59.867 [debug] QUERY OK source="media_items" db=0.2ms idle=367.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32628] 04:27:59.868 [debug] QUERY OK source="settings" db=0.0ms idle=228.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.868 [debug] QUERY OK source="settings" db=0.0ms idle=228.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.868 [debug] QUERY OK source="settings" db=0.0ms idle=228.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:27:59.869 [info] Sent 200 in 2ms 04:28:00.058 [info] GET /sources/3/media/49182 04:28:00.058 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49182", "source_id" => "3"} Pipelines: [:browser] 04:28:00.058 [debug] QUERY OK source="media_items" db=0.1ms idle=418.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" = ?) [49182] 04:28:00.059 [debug] QUERY OK source="tasks" db=0.1ms idle=191.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49182] 04:28:00.059 [debug] QUERY OK source="sources" db=0.2ms idle=190.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:28:00.059 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=191.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16108] 04:28:00.059 [debug] QUERY OK source="settings" db=0.1ms idle=191.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.060 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:00.060 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:00.060 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:00.061 [info] Sent 200 in 3ms 04:28:00.251 [info] GET /sources/3/media/45854 04:28:00.252 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "45854", "source_id" => "3"} Pipelines: [:browser] 04:28:00.252 [debug] QUERY OK source="media_items" db=0.1ms idle=192.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" = ?) [45854] 04:28:00.252 [debug] QUERY OK source="sources" db=0.1ms idle=192.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:28:00.253 [debug] QUERY OK source="tasks" db=0.3ms idle=192.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [45854] 04:28:00.253 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=193.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [15474, 15581] 04:28:00.254 [debug] QUERY OK source="settings" db=0.1ms idle=193.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.254 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:00.254 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:00.255 [debug] QUERY OK source="media_profiles" db=0.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] 04:28:00.256 [info] Sent 200 in 4ms 04:28:00.408 [info] {"source":"oban","duration":242,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:28:00.443 [info] GET /sources/7/media/32635/edit 04:28:00.443 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32635", "source_id" => "7"} Pipelines: [:browser] 04:28:00.444 [debug] QUERY OK source="media_items" db=0.2ms idle=189.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" = ?) [32635] 04:28:00.444 [debug] QUERY OK source="settings" db=0.1ms idle=190.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.445 [debug] QUERY OK source="settings" db=0.5ms idle=190.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.445 [debug] QUERY OK source="settings" db=0.0ms idle=190.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.446 [info] Sent 200 in 2ms 04:28:00.627 [info] GET /sources/7/media/32618 04:28:00.627 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32618", "source_id" => "7"} Pipelines: [:browser] 04:28:00.628 [debug] QUERY OK source="media_items" db=0.2ms idle=183.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" = ?) [32618] 04:28:00.628 [debug] QUERY OK source="tasks" db=0.1ms idle=183.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32618] 04:28:00.629 [debug] QUERY OK source="sources" db=0.2ms idle=183.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] 04:28:00.629 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=183.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 (?,?,?)) [15062, 15553, 16053] 04:28:00.629 [debug] QUERY OK source="settings" db=0.0ms idle=157.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.630 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.630 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.630 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:00.631 [info] Sent 200 in 3ms 04:28:00.809 [info] GET /sources/7/media/32618/edit 04:28:00.809 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32618", "source_id" => "7"} Pipelines: [:browser] 04:28:00.809 [debug] QUERY OK source="media_items" db=0.2ms idle=180.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" = ?) [32618] 04:28:00.810 [debug] QUERY OK source="settings" db=0.1ms idle=180.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.810 [debug] QUERY OK source="settings" db=0.0ms idle=180.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.810 [debug] QUERY OK source="settings" db=0.0ms idle=180.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.811 [info] Sent 200 in 2ms 04:28:00.994 [info] GET /sources/4/media/50466 04:28:00.994 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50466", "source_id" => "4"} Pipelines: [:browser] 04:28:00.995 [debug] QUERY OK source="media_items" db=0.1ms idle=363.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50466] 04:28:00.995 [debug] QUERY OK source="tasks" db=0.1ms idle=185.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50466] 04:28:00.995 [debug] QUERY OK source="sources" db=0.1ms idle=185.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" = ?) [4] 04:28:00.995 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=185.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16327] 04:28:00.995 [debug] QUERY OK source="settings" db=0.0ms idle=185.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.996 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:00.996 [debug] QUERY OK source="settings" db=0.0ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:00.996 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:00.997 [info] Sent 200 in 3ms 04:28:01.144 [info] GET /sources/4/media/50466/edit 04:28:01.145 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50466", "source_id" => "4"} Pipelines: [:browser] 04:28:01.145 [debug] QUERY OK source="media_items" db=0.4ms idle=149.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" = ?) [50466] 04:28:01.146 [debug] QUERY OK source="settings" db=0.0ms idle=150.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:01.146 [debug] QUERY OK source="settings" db=0.0ms idle=150.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:01.146 [debug] QUERY OK source="settings" db=0.0ms idle=150.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:01.147 [info] Sent 200 in 2ms 04:28:02.901 [info] GET /sources/7/media/32634 04:28:02.901 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32634", "source_id" => "7"} Pipelines: [:browser] 04:28:02.901 [debug] QUERY OK source="media_items" db=0.2ms idle=502.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32634] 04:28:02.902 [debug] QUERY OK source="tasks" db=0.2ms idle=502.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32634] 04:28:02.902 [debug] QUERY OK source="sources" db=0.2ms idle=502.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] 04:28:02.902 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=503.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 (?,?,?)) [15068, 15614, 16153] 04:28:02.903 [debug] QUERY OK source="settings" db=0.0ms idle=428.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:02.903 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:02.903 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:02.904 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:02.905 [info] Sent 200 in 4ms 04:28:03.112 [info] GET /sources/7/media/32634/edit 04:28:03.112 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32634", "source_id" => "7"} Pipelines: [:browser] 04:28:03.113 [debug] QUERY OK source="media_items" db=0.2ms idle=210.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" = ?) [32634] 04:28:03.113 [debug] QUERY OK source="settings" db=0.1ms idle=210.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.114 [debug] QUERY OK source="settings" db=0.1ms idle=210.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.114 [debug] QUERY OK source="settings" db=0.0ms idle=210.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.115 [info] Sent 200 in 2ms 04:28:03.320 [info] GET /sources/4/media/50045/edit 04:28:03.320 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50045", "source_id" => "4"} Pipelines: [:browser] 04:28:03.321 [debug] QUERY OK source="media_items" db=0.1ms 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" = ?) [50045] 04:28:03.321 [debug] QUERY OK source="settings" db=0.0ms idle=208.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.321 [debug] QUERY OK source="settings" db=0.0ms idle=207.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.322 [debug] QUERY OK source="settings" db=0.0ms idle=207.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.323 [info] Sent 200 in 2ms 04:28:03.423 [info] GET /sources/4/media/50045 04:28:03.423 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50045", "source_id" => "4"} Pipelines: [:browser] 04:28:03.423 [debug] QUERY OK source="media_items" db=0.2ms idle=308.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" = ?) [50045] 04:28:03.424 [debug] QUERY OK source="tasks" db=0.1ms idle=102.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50045] 04:28:03.424 [debug] QUERY OK source="sources" db=0.2ms idle=102.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" = ?) [4] 04:28:03.424 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=102.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16247] 04:28:03.424 [debug] QUERY OK source="settings" db=0.0ms idle=102.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.424 [debug] QUERY OK source="settings" db=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 [] 04:28:03.425 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:03.425 [debug] QUERY OK source="media_profiles" db=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] 04:28:03.426 [info] Sent 200 in 3ms 04:28:03.526 [info] GET /sources/3/media/44631 04:28:03.526 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "44631", "source_id" => "3"} Pipelines: [:browser] 04:28:03.527 [debug] QUERY OK source="media_items" db=0.2ms idle=102.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" = ?) [44631] 04:28:03.527 [debug] QUERY OK source="tasks" db=0.1ms idle=102.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [44631] 04:28:03.528 [debug] QUERY OK source="sources" db=0.2ms idle=102.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" = ?) [3] 04:28:03.528 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=102.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [15254, 15309] 04:28:03.528 [debug] QUERY OK source="settings" db=0.0ms idle=53.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.528 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.529 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:03.529 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:03.530 [info] Sent 200 in 4ms 04:28:03.734 [info] GET /sources/3/media/44631/edit 04:28:03.734 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "44631", "source_id" => "3"} Pipelines: [:browser] 04:28:03.735 [debug] QUERY OK source="media_items" db=0.2ms idle=206.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" = ?) [44631] 04:28:03.735 [debug] QUERY OK source="settings" db=0.1ms idle=206.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.735 [debug] QUERY OK source="settings" db=0.1ms idle=206.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.736 [debug] QUERY OK source="settings" db=0.0ms idle=206.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.736 [info] Sent 200 in 2ms 04:28:03.783 [info] GET /sources/7/media/32619/edit 04:28:03.783 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32619", "source_id" => "7"} Pipelines: [:browser] 04:28:03.784 [debug] QUERY OK source="media_items" db=0.2ms idle=254.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" = ?) [32619] 04:28:03.784 [debug] QUERY OK source="settings" db=0.1ms idle=49.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.784 [debug] QUERY OK source="settings" db=0.0ms idle=49.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.785 [debug] QUERY OK source="settings" db=0.1ms idle=49.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.786 [info] Sent 200 in 2ms 04:28:03.812 [info] GET /sources/7/media/32619 04:28:03.812 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32619", "source_id" => "7"} Pipelines: [:browser] 04:28:03.812 [debug] QUERY OK source="media_items" db=0.1ms idle=76.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" = ?) [32619] 04:28:03.813 [debug] QUERY OK source="tasks" db=0.1ms idle=28.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32619] 04:28:03.813 [debug] QUERY OK source="sources" db=0.1ms idle=28.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] 04:28:03.813 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=28.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 (?,?,?)) [15063, 15554, 16054] 04:28:03.814 [debug] QUERY OK source="settings" db=0.1ms idle=28.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.814 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.814 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:03.815 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:03.816 [info] Sent 200 in 3ms 04:28:03.873 [info] GET /sources/7/media/50087/edit 04:28:03.873 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50087", "source_id" => "7"} Pipelines: [:browser] 04:28:03.874 [debug] QUERY OK source="media_items" db=0.2ms idle=60.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" = ?) [50087] 04:28:03.874 [debug] QUERY OK source="settings" db=0.0ms idle=60.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.874 [debug] QUERY OK source="settings" db=0.0ms idle=60.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.874 [debug] QUERY OK source="settings" db=0.0ms idle=60.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.875 [info] Sent 200 in 2ms 04:28:03.934 [info] GET /sources/4/media/49424 04:28:03.935 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49424", "source_id" => "4"} Pipelines: [:browser] 04:28:03.935 [debug] QUERY OK source="media_items" db=0.2ms idle=120.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" = ?) [49424] 04:28:03.936 [debug] QUERY OK source="tasks" db=0.2ms idle=61.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49424] 04:28:03.936 [debug] QUERY OK source="sources" db=0.2ms idle=61.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" = ?) [4] 04:28:03.936 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=61.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16151] 04:28:03.936 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:03.936 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.937 [debug] QUERY OK source="settings" db=0.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:03.937 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 04:28:03.938 [info] Sent 200 in 3ms 04:28:04.034 [info] GET /sources/7/media/50087 04:28:04.034 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50087", "source_id" => "7"} Pipelines: [:browser] 04:28:04.035 [debug] QUERY OK source="media_items" db=0.2ms idle=98.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" = ?) [50087] 04:28:04.035 [debug] QUERY OK source="tasks" db=0.0ms idle=98.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50087] 04:28:04.035 [debug] QUERY OK source="sources" db=0.1ms idle=98.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] 04:28:04.035 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=98.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16250] 04:28:04.035 [debug] QUERY OK source="settings" db=0.0ms idle=98.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.036 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.036 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.036 [debug] QUERY OK source="media_profiles" db=0.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] 04:28:04.038 [info] Sent 200 in 3ms 04:28:04.162 [info] GET /sources/7/media/50089 04:28:04.163 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50089", "source_id" => "7"} Pipelines: [:browser] 04:28:04.163 [debug] QUERY OK source="media_items" db=0.2ms idle=127.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" = ?) [50089] 04:28:04.164 [debug] QUERY OK source="sources" db=0.2ms idle=127.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] 04:28:04.164 [debug] QUERY OK source="tasks" db=0.2ms idle=127.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50089] 04:28:04.164 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=127.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16252] 04:28:04.164 [debug] QUERY OK source="settings" db=0.0ms idle=127.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.164 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:04.165 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.165 [debug] QUERY OK source="media_profiles" db=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] 04:28:04.166 [info] Sent 200 in 4ms 04:28:04.292 [info] GET /sources/4/media/49837/edit 04:28:04.292 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49837", "source_id" => "4"} Pipelines: [:browser] 04:28:04.292 [debug] QUERY OK source="media_items" db=0.2ms idle=128.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" = ?) [49837] 04:28:04.293 [debug] QUERY OK source="settings" db=0.0ms idle=128.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.293 [debug] QUERY OK source="settings" db=0.0ms idle=128.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.293 [debug] QUERY OK source="settings" db=0.0ms idle=128.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.294 [info] Sent 200 in 2ms 04:28:04.421 [info] GET /sources/4/media/49837 04:28:04.421 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49837", "source_id" => "4"} Pipelines: [:browser] 04:28:04.421 [debug] QUERY OK source="media_items" db=0.2ms idle=255.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" = ?) [49837] 04:28:04.422 [debug] QUERY OK source="tasks" db=0.1ms idle=129.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49837] 04:28:04.422 [debug] QUERY OK source="sources" db=0.1ms idle=128.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 04:28:04.422 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=129.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16216] 04:28:04.422 [debug] QUERY OK source="settings" db=0.0ms idle=128.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.422 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:04.423 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:04.423 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:04.424 [info] Sent 200 in 3ms 04:28:09.438 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:28:26.473 [info] GET /sources/7/media/50089/edit 04:28:26.473 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50089", "source_id" => "7"} Pipelines: [:browser] 04:28:26.474 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1075.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" = ?) [50089] 04:28:26.474 [debug] QUERY OK source="settings" db=0.1ms idle=976.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.474 [debug] QUERY OK source="settings" db=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 [] 04:28:26.475 [debug] QUERY OK source="settings" db=0.1ms idle=76.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.476 [info] Sent 200 in 2ms 04:28:26.683 [info] GET /sources/7/media/50086/edit 04:28:26.684 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50086", "source_id" => "7"} Pipelines: [:browser] 04:28:26.684 [debug] QUERY OK source="media_items" db=0.2ms idle=209.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" = ?) [50086] 04:28:26.684 [debug] QUERY OK source="settings" db=0.1ms idle=210.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.685 [debug] QUERY OK source="settings" db=0.0ms idle=210.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.685 [debug] QUERY OK source="settings" db=0.1ms idle=210.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.686 [info] Sent 200 in 2ms 04:28:26.805 [info] GET /sources/3/media/47935 04:28:26.806 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47935", "source_id" => "3"} Pipelines: [:browser] 04:28:26.806 [debug] QUERY OK source="media_items" db=0.1ms idle=306.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" = ?) [47935] 04:28:26.807 [debug] QUERY OK source="tasks" db=0.2ms idle=122.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47935] 04:28:26.807 [debug] QUERY OK source="sources" db=0.2ms idle=121.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:28:26.807 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=122.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [15872, 15914] 04:28:26.807 [debug] QUERY OK source="settings" db=0.0ms idle=122.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.807 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:26.808 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.808 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:26.809 [info] Sent 200 in 3ms 04:28:26.839 [info] GET /sources/7/media/32627/edit 04:28:26.839 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32627", "source_id" => "7"} Pipelines: [:browser] 04:28:26.840 [debug] QUERY OK source="media_items" db=0.3ms idle=32.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" = ?) [32627] 04:28:26.840 [debug] QUERY OK source="settings" db=0.1ms idle=32.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.840 [debug] QUERY OK source="settings" db=0.0ms idle=32.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.841 [debug] QUERY OK source="settings" db=0.0ms idle=33.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.841 [info] Sent 200 in 2ms 04:28:26.869 [info] GET /sources/7/media/32627 04:28:26.869 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32627", "source_id" => "7"} Pipelines: [:browser] 04:28:26.870 [debug] QUERY OK source="media_items" db=0.2ms idle=61.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" = ?) [32627] 04:28:26.870 [debug] QUERY OK source="tasks" db=0.1ms idle=30.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32627] 04:28:26.870 [debug] QUERY OK source="sources" db=0.2ms idle=29.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] 04:28:26.870 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=29.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 (?,?,?)) [15065, 15556, 16056] 04:28:26.871 [debug] QUERY OK source="settings" db=0.0ms idle=30.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.871 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:26.871 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:26.872 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:26.873 [info] Sent 200 in 3ms 04:28:26.911 [info] GET /sources/4/media/49424/edit 04:28:26.911 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49424", "source_id" => "4"} Pipelines: [:browser] 04:28:26.911 [debug] QUERY OK source="media_items" db=0.2ms idle=40.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" = ?) [49424] 04:28:26.912 [debug] QUERY OK source="settings" db=0.0ms idle=40.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.912 [debug] QUERY OK source="settings" db=0.0ms idle=40.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.912 [debug] QUERY OK source="settings" db=0.0ms idle=40.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:26.913 [info] Sent 200 in 2ms 04:28:26.945 [info] GET /sources/7/media/50086 04:28:26.945 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50086", "source_id" => "7"} Pipelines: [:browser] 04:28:26.945 [debug] QUERY OK source="media_items" db=0.2ms idle=73.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" = ?) [50086] 04:28:26.946 [debug] QUERY OK source="tasks" db=0.1ms idle=34.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50086] 04:28:26.946 [debug] QUERY OK source="sources" db=0.2ms idle=33.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] 04:28:26.946 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=34.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16249, 16298] 04:28:26.946 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:26.946 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:26.947 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:26.947 [debug] QUERY OK source="media_profiles" db=0.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] 04:28:26.948 [info] Sent 200 in 3ms 04:28:27.004 [info] GET /sources/3/media/47935/edit 04:28:27.004 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "47935", "source_id" => "3"} Pipelines: [:browser] 04:28:27.005 [debug] QUERY OK source="media_items" db=0.2ms 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 WHERE (m0."id" = ?) [47935] 04:28:27.005 [debug] QUERY OK source="settings" db=0.0ms idle=58.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.005 [debug] QUERY OK source="settings" db=0.0ms idle=58.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.006 [debug] QUERY OK source="settings" db=0.0ms idle=58.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.006 [info] Sent 200 in 2ms 04:28:27.016 [info] GET /sources/7/media/32614/edit 04:28:27.016 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32614", "source_id" => "7"} Pipelines: [:browser] 04:28:27.017 [debug] QUERY OK source="media_items" db=0.1ms idle=69.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" = ?) [32614] 04:28:27.017 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:27.017 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:27.018 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:27.018 [info] Sent 200 in 2ms 04:28:27.045 [info] GET /sources/7/media/49878/edit 04:28:27.045 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49878", "source_id" => "7"} Pipelines: [:browser] 04:28:27.046 [debug] QUERY OK source="media_items" db=0.2ms idle=39.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" = ?) [49878] 04:28:27.046 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=28.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.046 [debug] QUERY OK source="settings" db=0.1ms idle=28.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.046 [debug] QUERY OK source="settings" db=0.0ms idle=29.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.047 [info] Sent 200 in 2ms 04:28:27.082 [info] GET /sources/7/media/32614 04:28:27.082 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32614", "source_id" => "7"} Pipelines: [:browser] 04:28:27.083 [debug] QUERY OK source="media_items" db=0.1ms idle=65.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" = ?) [32614] 04:28:27.083 [debug] QUERY OK source="tasks" db=0.1ms idle=37.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32614] 04:28:27.083 [debug] QUERY OK source="sources" db=0.1ms idle=37.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] 04:28:27.084 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=37.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15061, 15552, 16052] 04:28:27.084 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:27.084 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:27.085 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.085 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:27.086 [info] Sent 200 in 3ms 04:28:27.196 [info] GET /sources/7/media/49878 04:28:27.196 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49878", "source_id" => "7"} Pipelines: [:browser] 04:28:27.197 [debug] QUERY OK source="media_items" db=0.2ms idle=113.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" = ?) [49878] 04:28:27.197 [debug] QUERY OK source="tasks" db=0.1ms idle=113.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49878] 04:28:27.198 [debug] QUERY OK source="sources" db=0.2ms idle=113.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] 04:28:27.198 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=113.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16218] 04:28:27.198 [debug] QUERY OK source="settings" db=0.0ms idle=113.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.198 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:27.199 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.199 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:27.200 [info] Sent 200 in 3ms 04:28:27.310 [info] GET /sources/3/media/42079/edit 04:28:27.310 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "42079", "source_id" => "3"} Pipelines: [:browser] 04:28:27.311 [debug] QUERY OK source="media_items" db=0.1ms idle=112.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" = ?) [42079] 04:28:27.311 [debug] QUERY OK source="settings" db=0.0ms idle=112.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.311 [debug] QUERY OK source="settings" db=0.0ms idle=112.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.312 [debug] QUERY OK source="settings" db=0.0ms idle=112.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.312 [info] Sent 200 in 2ms 04:28:27.410 [info] GET /sources/7/media/49257/edit 04:28:27.411 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49257", "source_id" => "7"} Pipelines: [:browser] 04:28:27.411 [debug] QUERY OK source="media_items" db=0.1ms idle=211.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" = ?) [49257] 04:28:27.411 [debug] QUERY OK source="settings" db=0.1ms idle=100.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.412 [debug] QUERY OK source="settings" db=0.1ms idle=100.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.412 [debug] QUERY OK source="settings" db=0.0ms idle=100.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:27.412 [info] Sent 200 in 2ms 04:28:39.439 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:28:39.850 [info] GET /sources/3/media/45854/edit 04:28:39.851 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "45854", "source_id" => "3"} Pipelines: [:browser] 04:28:39.851 [debug] QUERY OK source="media_items" db=0.3ms idle=452.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [45854] 04:28:39.852 [debug] QUERY OK source="settings" db=0.0ms idle=452.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:39.852 [debug] QUERY OK source="settings" db=0.0ms idle=453.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:39.852 [debug] QUERY OK source="settings" db=0.0ms idle=412.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:39.853 [info] Sent 200 in 2ms 04:28:39.895 [info] GET /sources/3/media/42079 04:28:39.895 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "42079", "source_id" => "3"} Pipelines: [:browser] 04:28:39.895 [debug] QUERY OK source="media_items" db=0.2ms idle=382.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" = ?) [42079] 04:28:39.896 [debug] QUERY OK source="tasks" db=0.1ms idle=44.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [42079] 04:28:39.896 [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" = ?) [3] 04:28:39.896 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=44.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [14759, 15335] 04:28:39.897 [debug] QUERY OK source="settings" db=0.0ms idle=44.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:39.897 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:39.897 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:39.898 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:39.899 [info] Sent 200 in 3ms 04:28:40.042 [info] GET /sources/7/media/49257 04:28:40.042 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49257", "source_id" => "7"} Pipelines: [:browser] 04:28:40.043 [debug] QUERY OK source="media_items" db=0.1ms idle=146.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" = ?) [49257] 04:28:40.043 [debug] QUERY OK source="tasks" db=0.1ms idle=146.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49257] 04:28:40.043 [debug] QUERY OK source="sources" db=0.2ms idle=146.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] 04:28:40.044 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=146.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [16112, 16160] 04:28:40.044 [debug] QUERY OK source="settings" db=0.0ms idle=146.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.044 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:40.044 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.045 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:40.046 [info] Sent 200 in 3ms 04:28:40.109 [info] GET /sources/3/media/47311/edit 04:28:40.109 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "47311", "source_id" => "3"} Pipelines: [:browser] 04:28:40.110 [debug] QUERY OK source="media_items" db=0.2ms idle=65.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" = ?) [47311] 04:28:40.110 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:40.110 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:40.111 [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 [] 04:28:40.111 [info] Sent 200 in 2ms 04:28:40.237 [info] GET /sources/7/media/50510/edit 04:28:40.238 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50510", "source_id" => "7"} Pipelines: [:browser] 04:28:40.238 [debug] QUERY OK source="media_items" db=0.3ms idle=192.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" = ?) [50510] 04:28:40.238 [debug] QUERY OK source="settings" db=0.0ms idle=128.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.239 [debug] QUERY OK source="settings" db=0.0ms idle=128.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.239 [debug] QUERY OK source="settings" db=0.0ms idle=128.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.240 [info] Sent 200 in 2ms 04:28:40.321 [info] GET /sources/3/media/44424 04:28:40.321 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "44424", "source_id" => "3"} Pipelines: [:browser] 04:28:40.321 [debug] QUERY OK source="media_items" db=0.2ms idle=210.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" = ?) [44424] 04:28:40.322 [debug] QUERY OK source="tasks" db=0.1ms idle=83.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [44424] 04:28:40.322 [debug] QUERY OK source="sources" db=0.2ms idle=83.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:28:40.322 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=83.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [15221, 15265] 04:28:40.322 [debug] QUERY OK source="settings" db=0.0ms idle=83.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.323 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.323 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:40.323 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:40.324 [info] Sent 200 in 3ms 04:28:40.428 [info] GET /sources/4/media/49630/edit 04:28:40.428 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "49630", "source_id" => "4"} Pipelines: [:browser] 04:28:40.428 [debug] QUERY OK source="media_items" db=0.2ms idle=106.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" = ?) [49630] 04:28:40.429 [debug] QUERY OK source="settings" db=0.1ms idle=106.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.429 [debug] QUERY OK source="settings" db=0.0ms idle=106.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.429 [debug] QUERY OK source="settings" db=0.0ms idle=106.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.430 [info] Sent 200 in 2ms 04:28:40.533 [info] GET /sources/3/media/44424/edit 04:28:40.534 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "44424", "source_id" => "3"} Pipelines: [:browser] 04:28:40.534 [debug] QUERY OK source="media_items" db=0.2ms idle=105.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" = ?) [44424] 04:28:40.534 [debug] QUERY OK source="settings" db=0.0ms idle=105.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.534 [debug] QUERY OK source="settings" db=0.0ms idle=105.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.535 [debug] QUERY OK source="settings" db=0.0ms idle=105.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.536 [info] Sent 200 in 2ms 04:28:40.617 [info] GET /sources/7/media/50088/edit 04:28:40.618 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50088", "source_id" => "7"} Pipelines: [:browser] 04:28:40.618 [debug] QUERY OK source="media_items" db=0.1ms idle=104.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" = ?) [50088] 04:28:40.619 [debug] QUERY OK source="settings" db=0.1ms idle=84.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.619 [debug] QUERY OK source="settings" db=0.0ms idle=84.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.619 [debug] QUERY OK source="settings" db=0.0ms idle=84.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.620 [info] Sent 200 in 2ms 04:28:40.742 [info] GET /sources/7/media/50511/edit 04:28:40.742 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50511", "source_id" => "7"} Pipelines: [:browser] 04:28:40.743 [debug] QUERY OK source="media_items" db=0.2ms idle=207.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" = ?) [50511] 04:28:40.743 [debug] QUERY OK source="settings" db=0.0ms idle=124.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.743 [debug] QUERY OK source="settings" db=0.0ms idle=124.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.744 [debug] QUERY OK source="settings" db=0.0ms idle=124.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.744 [info] Sent 200 in 2ms 04:28:40.755 [info] GET /sources/4/media/49630 04:28:40.755 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "49630", "source_id" => "4"} Pipelines: [:browser] 04:28:40.755 [debug] QUERY OK source="media_items" db=0.1ms idle=136.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" = ?) [49630] 04:28:40.756 [debug] QUERY OK source="tasks" db=0.1ms idle=12.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [49630] 04:28:40.756 [debug] QUERY OK source="sources" db=0.2ms idle=12.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 04:28:40.756 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=12.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" = ?) [16185] 04:28:40.757 [debug] QUERY OK source="settings" db=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 [] 04:28:40.757 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:40.757 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:40.757 [debug] QUERY OK source="media_profiles" db=0.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] 04:28:40.758 [info] Sent 200 in 3ms 04:28:40.790 [info] GET /sources/7/media/50088 04:28:40.790 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50088", "source_id" => "7"} Pipelines: [:browser] 04:28:40.791 [debug] QUERY OK source="media_items" db=0.2ms idle=34.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" = ?) [50088] 04:28:40.791 [debug] QUERY OK source="tasks" db=0.1ms idle=34.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50088] 04:28:40.791 [debug] QUERY OK source="sources" db=0.1ms idle=34.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] 04:28:40.791 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=34.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16251] 04:28:40.792 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:40.792 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:40.792 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.792 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:40.793 [info] Sent 200 in 3ms 04:28:40.806 [info] GET /sources/3/media/48970/edit 04:28:40.806 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "48970", "source_id" => "3"} Pipelines: [:browser] 04:28:40.806 [debug] QUERY OK source="media_items" db=0.2ms idle=14.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" = ?) [48970] 04:28:40.807 [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 [] 04:28:40.807 [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 [] 04:28:40.807 [debug] QUERY OK source="settings" db=0.0ms idle=15.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.808 [info] Sent 200 in 2ms 04:28:40.827 [info] GET /sources/7/media/32621 04:28:40.827 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32621", "source_id" => "7"} Pipelines: [:browser] 04:28:40.828 [debug] QUERY OK source="media_items" db=0.3ms idle=34.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" = ?) [32621] 04:28:40.828 [debug] QUERY OK source="tasks" db=0.1ms idle=21.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32621] 04:28:40.828 [debug] QUERY OK source="sources" db=0.2ms idle=21.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] 04:28:40.829 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=21.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15064, 15555, 16055] 04:28:40.829 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:40.829 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:40.830 [debug] QUERY OK source="settings" db=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 [] 04:28:40.830 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:40.831 [info] Sent 200 in 4ms 04:28:49.661 [info] GET /sources/3/media/48970 04:28:49.661 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "48970", "source_id" => "3"} Pipelines: [:browser] 04:28:49.661 [debug] QUERY OK source="media_items" db=0.2ms idle=1262.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" = ?) [48970] 04:28:49.662 [debug] QUERY OK source="tasks" db=0.1ms idle=1263.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [48970] 04:28:49.662 [debug] QUERY OK source="sources" db=0.1ms idle=1263.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:28:49.662 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1140.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 (?,?)) [16043, 16122] 04:28:49.663 [debug] QUERY OK source="settings" db=0.0ms idle=140.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:49.663 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:49.663 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:49.664 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:49.665 [info] Sent 200 in 3ms 04:28:49.824 [info] GET /sources/4/media/50259/edit 04:28:49.824 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50259", "source_id" => "4"} Pipelines: [:browser] 04:28:49.825 [debug] QUERY OK source="media_items" db=0.2ms idle=162.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50259] 04:28:49.825 [debug] QUERY OK source="settings" db=0.0ms idle=162.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:49.825 [debug] QUERY OK source="settings" db=0.1ms idle=162.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:49.826 [debug] QUERY OK source="settings" db=0.1ms idle=162.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:49.826 [info] Sent 200 in 2ms 04:28:49.836 [info] GET /sources/4/media/50259 04:28:49.836 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50259", "source_id" => "4"} Pipelines: [:browser] 04:28:49.836 [debug] QUERY OK source="media_items" db=0.2ms idle=172.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" = ?) [50259] 04:28:49.837 [debug] QUERY OK source="tasks" db=0.1ms idle=11.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50259] 04:28:49.837 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [4] 04:28:49.837 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=11.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" = ?) [16289] 04:28:49.838 [debug] QUERY OK source="settings" db=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 [] 04:28:49.838 [debug] QUERY OK source="settings" db=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 [] 04:28:49.838 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:49.839 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:49.840 [info] Sent 200 in 4ms 04:28:49.872 [info] GET /sources/4/media/50467/edit 04:28:49.872 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50467", "source_id" => "4"} Pipelines: [:browser] 04:28:49.872 [debug] QUERY OK source="media_items" db=0.2ms idle=34.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" = ?) [50467] 04:28:49.873 [debug] QUERY OK source="settings" db=0.1ms 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 [] 04:28:49.873 [debug] QUERY OK source="settings" db=0.1ms 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 [] 04:28:49.873 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:49.874 [info] Sent 200 in 2ms 04:28:49.906 [info] GET /sources/4/media/50678/edit 04:28:49.906 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50678", "source_id" => "4"} Pipelines: [:browser] 04:28:49.907 [debug] QUERY OK source="media_items" db=0.3ms idle=67.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" = ?) [50678] 04:28:49.907 [debug] QUERY OK source="settings" db=0.1ms 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 [] 04:28:49.907 [debug] QUERY OK source="settings" db=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 [] 04:28:49.908 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:49.908 [info] Sent 200 in 2ms 04:28:49.915 [info] GET /sources/7/media/50300/edit 04:28:49.916 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50300", "source_id" => "7"} Pipelines: [:browser] 04:28:49.916 [debug] QUERY OK source="media_items" db=0.3ms idle=42.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" = ?) [50300] 04:28:49.916 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:49.917 [debug] QUERY OK source="settings" db=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 [] 04:28:49.917 [debug] QUERY OK source="settings" db=0.0ms idle=9.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:49.918 [info] Sent 200 in 2ms 04:28:50.015 [info] GET /sources/7/media/50300 04:28:50.015 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50300", "source_id" => "7"} Pipelines: [:browser] 04:28:50.015 [debug] QUERY OK source="media_items" db=0.2ms idle=107.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" = ?) [50300] 04:28:50.016 [debug] QUERY OK source="tasks" db=0.1ms idle=99.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50300] 04:28:50.016 [debug] QUERY OK source="sources" db=0.1ms idle=98.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] 04:28:50.016 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=99.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16291] 04:28:50.016 [debug] QUERY OK source="settings" db=0.0ms idle=98.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.016 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:50.017 [debug] QUERY OK source="settings" db=0.0ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.017 [debug] QUERY OK source="media_profiles" db=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] 04:28:50.018 [info] Sent 200 in 3ms 04:28:50.035 [info] GET /media/cb342240-3ac0-4e80-b6e2-dc3d06fa7a88/stream 04:28:50.036 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "cb342240-3ac0-4e80-b6e2-dc3d06fa7a88"} Pipelines: [:maybe_basic_auth] 04:28:50.036 [debug] QUERY OK source="media_items" db=0.2ms idle=19.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["cb342240-3ac0-4e80-b6e2-dc3d06fa7a88"] 04:28:50.036 [debug] Invalid range request for media item: cb342240-3ac0-4e80-b6e2-dc3d06fa7a88 - serving full file 04:28:50.036 [info] Sent 200 in 902µs 04:28:50.138 [info] GET /sources/7/media/50719/force_download 04:28:50.138 [info] GET /sources/7/media/32682/force_download 04:28:50.139 [debug] QUERY OK source="settings" db=0.7ms idle=121.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.139 [info] GET /sources/7/media/32687/force_download 04:28:50.139 [info] GET /sources/7/media/32741/force_download 04:28:50.140 [debug] QUERY OK source="settings" db=0.7ms idle=122.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.140 [debug] QUERY OK source="settings" db=0.6ms idle=122.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.140 [debug] QUERY OK source="settings" db=0.8ms queue=0.3ms idle=122.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.140 [debug] QUERY OK source="settings" db=0.5ms idle=103.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.140 [debug] QUERY OK source="settings" db=0.4ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.140 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:28:50.140 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:28:50.140 [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 [] 04:28:50.141 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:28:50.141 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.141 [error] #PID<0.92619.0> running PinchflatWeb.Endpoint (connection #PID<0.92618.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50719/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50719/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92618.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50719/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46256}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92619.0>, params: %{}, path_info: ["sources", "7", "media", "50719", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/7/media/50719/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FSiCd_gC4k4gABdfC"} ], 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.92618.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50719/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46256}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/7/media/50719/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92618.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50719/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46256}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92619.0>, params: %{}, path_info: ["sources", "7", "media", "50719", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], (truncated) 04:28:50.143 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:28:50.141 [error] #PID<0.92621.0> running PinchflatWeb.Endpoint (connection #PID<0.92620.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/32682/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/32682/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92620.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32682/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46268}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92621.0>, params: %{}, path_info: ["sources", "7", "media", "32682", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/7/media/32682/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FSiCqW5mzmEIABdfi"} ], 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.92620.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32682/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46268}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/7/media/32682/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92620.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32682/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46268}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92621.0>, params: %{}, path_info: ["sources", "7", "media", "32682", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], (truncated) 04:28:50.142 [error] #PID<0.92623.0> running PinchflatWeb.Endpoint (connection #PID<0.92622.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/32687/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/32687/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92622.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32687/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46278}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU3Vqa0hIbjBfeE1rLTRCcm1CXzBQVjBp.Rt_-95ekKPSar8xPxGgTz75ZKgsDg8qYCk8MGMv_nUY", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU3Vqa0hIbjBfeE1rLTRCcm1CXzBQVjBp.Rt_-95ekKPSar8xPxGgTz75ZKgsDg8qYCk8MGMv_nUY" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.92623.0>, params: %{}, path_info: ["sources", "7", "media", "32687", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU3Vqa0hIbjBfeE1rLTRCcm1CXzBQVjBp.Rt_-95ekKPSar8xPxGgTz75ZKgsDg8qYCk8MGMv_nUY" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU3Vqa0hIbjBfeE1rLTRCcm1CXzBQVjBp.Rt_-95ekKPSar8xPxGgTz75ZKgsDg8qYCk8MGMv_nUY"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/7/media/32687/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FSiC0vZ-9jBUABdgC"} ], 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.92622.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32687/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46278}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU3Vqa0hIbjBfeE1rLTRCcm1CXzBQVjBp.Rt_-95ekKPSar8xPxGgTz75ZKgsDg8qYCk8MGMv_nUY", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/7/media/32687/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92622.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32687/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46278}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU3Vqa0hIbjBfeE1rLTRCcm1CXzBQVjBp.Rt_-95ekKPSar8xPxGgTz75ZKgsDg8qYCk8MGMv_nUY", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU3Vqa0hIbjBfeE1rLTRCcm1CXzBQVjBp.Rt_-95ekKPSar8xPxGgTz75ZKgsDg8qYCk8MGMv_nUY" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.92623.0>, params: %{}, path_info: ["sources", "7", "media", "32687", "force_download"], path_params: %{}, port: 80, (truncated) 04:28:50.143 [error] #PID<0.92625.0> running PinchflatWeb.Endpoint (connection #PID<0.92624.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/32741/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/32741/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92624.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32741/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46292}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUUhjVHJxaDZXSXhPRDVxRk5pT2F2bVFD.lxjxEfmuRlXNVPFMAfT5v_bjM14DJHPyEwLdl9u-1_Y", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUUhjVHJxaDZXSXhPRDVxRk5pT2F2bVFD.lxjxEfmuRlXNVPFMAfT5v_bjM14DJHPyEwLdl9u-1_Y" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.92625.0>, params: %{}, path_info: ["sources", "7", "media", "32741", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUUhjVHJxaDZXSXhPRDVxRk5pT2F2bVFD.lxjxEfmuRlXNVPFMAfT5v_bjM14DJHPyEwLdl9u-1_Y" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUUhjVHJxaDZXSXhPRDVxRk5pT2F2bVFD.lxjxEfmuRlXNVPFMAfT5v_bjM14DJHPyEwLdl9u-1_Y"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/7/media/32741/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FSiC6k-GiNqMABdgi"} ], 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.92624.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32741/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46292}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUUhjVHJxaDZXSXhPRDVxRk5pT2F2bVFD.lxjxEfmuRlXNVPFMAfT5v_bjM14DJHPyEwLdl9u-1_Y", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/7/media/32741/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92624.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/32741/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46292}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUUhjVHJxaDZXSXhPRDVxRk5pT2F2bVFD.lxjxEfmuRlXNVPFMAfT5v_bjM14DJHPyEwLdl9u-1_Y", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUUhjVHJxaDZXSXhPRDVxRk5pT2F2bVFD.lxjxEfmuRlXNVPFMAfT5v_bjM14DJHPyEwLdl9u-1_Y" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.92625.0>, params: %{}, path_info: ["sources", "7", "media", "32741", "force_download"], path_params: %{}, port: 80, (truncated) 04:28:50.212 [info] GET /media/53971184-e7d9-434c-9883-a0bc31b27db3/stream 04:28:50.212 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "53971184-e7d9-434c-9883-a0bc31b27db3"} Pipelines: [:maybe_basic_auth] 04:28:50.213 [debug] QUERY OK source="media_items" db=0.4ms idle=72.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["53971184-e7d9-434c-9883-a0bc31b27db3"] 04:28:50.214 [debug] Invalid range request for media item: 53971184-e7d9-434c-9883-a0bc31b27db3 - serving full file 04:28:50.214 [info] Sent 200 in 1ms 04:28:50.363 [info] GET /sources/3/media/47311/force_download 04:28:50.364 [debug] QUERY OK source="settings" db=0.1ms idle=223.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.364 [debug] QUERY OK source="settings" db=0.2ms idle=223.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:50.364 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:28:50.365 [error] #PID<0.92629.0> running PinchflatWeb.Endpoint (connection #PID<0.92628.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/3/media/47311/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/47311/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92628.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/47311/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46302}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYY3VOT2hTRWNCVlhXamhGdlpFaGhKTHlh.6TCcPbCQXWK3ikDbAJ6JKhMSkvB7qug4SrDq8AlMKko", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYY3VOT2hTRWNCVlhXamhGdlpFaGhKTHlh.6TCcPbCQXWK3ikDbAJ6JKhMSkvB7qug4SrDq8AlMKko" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.92629.0>, params: %{}, path_info: ["sources", "3", "media", "47311", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYY3VOT2hTRWNCVlhXamhGdlpFaGhKTHlh.6TCcPbCQXWK3ikDbAJ6JKhMSkvB7qug4SrDq8AlMKko" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYY3VOT2hTRWNCVlhXamhGdlpFaGhKTHlh.6TCcPbCQXWK3ikDbAJ6JKhMSkvB7qug4SrDq8AlMKko"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/3/media/47311/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FSi4MqnGhf3sACcxh"} ], 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.92628.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/47311/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46302}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYY3VOT2hTRWNCVlhXamhGdlpFaGhKTHlh.6TCcPbCQXWK3ikDbAJ6JKhMSkvB7qug4SrDq8AlMKko", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/3/media/47311/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92628.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/47311/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46302}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYY3VOT2hTRWNCVlhXamhGdlpFaGhKTHlh.6TCcPbCQXWK3ikDbAJ6JKhMSkvB7qug4SrDq8AlMKko", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYY3VOT2hTRWNCVlhXamhGdlpFaGhKTHlh.6TCcPbCQXWK3ikDbAJ6JKhMSkvB7qug4SrDq8AlMKko" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.92629.0>, params: %{}, path_info: ["sources", "3", "media", "47311", "force_download"], path_params: %{}, port: 80, (truncated) 04:28:57.175 [info] GET /sources/7/media/50510/force_download 04:28:57.175 [debug] QUERY OK source="settings" db=0.1ms idle=1771.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:57.175 [debug] QUERY OK source="settings" db=0.0ms idle=1771.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:57.176 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:28:57.176 [error] #PID<0.92631.0> running PinchflatWeb.Endpoint (connection #PID<0.92630.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50510/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50510/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92630.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46312}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92631.0>, params: %{}, path_info: ["sources", "7", "media", "50510", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/7/media/50510/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FS8QRZUehsDEACcyB"} ], 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.92630.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46312}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/7/media/50510/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92630.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50510/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46312}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92631.0>, params: %{}, path_info: ["sources", "7", "media", "50510", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], (truncated) 04:28:57.378 [info] GET /sources/7/media/50511/force_download 04:28:57.378 [debug] QUERY OK source="settings" db=0.1ms idle=1974.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:57.378 [debug] QUERY OK source="settings" db=0.0ms idle=1835.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:57.379 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:28:57.379 [error] #PID<0.92633.0> running PinchflatWeb.Endpoint (connection #PID<0.92632.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/media/50511/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/50511/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92632.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46314}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92633.0>, params: %{}, path_info: ["sources", "7", "media", "50511", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/7/media/50511/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FS9Ap9LJ88DIACcyh"} ], 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.92632.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46314}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/7/media/50511/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92632.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/50511/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 46314}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92633.0>, params: %{}, path_info: ["sources", "7", "media", "50511", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], (truncated) 04:28:57.582 [info] GET /media/bb92ecb0-8b63-4711-8901-d63fabb88f1e/stream 04:28:57.583 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "bb92ecb0-8b63-4711-8901-d63fabb88f1e"} Pipelines: [:maybe_basic_auth] 04:28:57.583 [debug] QUERY OK source="media_items" db=0.2ms idle=407.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["bb92ecb0-8b63-4711-8901-d63fabb88f1e"] 04:28:57.583 [debug] Invalid range request for media item: bb92ecb0-8b63-4711-8901-d63fabb88f1e - serving full file 04:28:57.583 [info] Sent 200 in 1ms 04:28:57.669 [info] GET /sources/4/media/50467/force_download 04:28:57.670 [debug] QUERY OK source="settings" db=0.2ms idle=494.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:57.671 [debug] QUERY OK source="settings" db=0.0ms idle=292.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:57.674 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:28:57.675 [error] #PID<0.92637.0> running PinchflatWeb.Endpoint (connection #PID<0.92636.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/50467/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/50467/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92636.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50467/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54178}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92637.0>, params: %{}, path_info: ["sources", "4", "media", "50467", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/4/media/50467/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FS-GLjk6p9boACczh"} ], 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.92636.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50467/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54178}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/4/media/50467/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92636.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50467/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54178}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92637.0>, params: %{}, path_info: ["sources", "4", "media", "50467", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], (truncated) 04:28:57.894 [info] GET /sources/4/media/50678/force_download 04:28:57.895 [debug] QUERY OK source="settings" db=0.2ms idle=516.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:57.895 [debug] QUERY OK source="settings" db=0.2ms idle=349.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:57.895 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:28:57.896 [error] #PID<0.92639.0> running PinchflatWeb.Endpoint (connection #PID<0.92638.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/media/50678/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/50678/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92638.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50678/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54188}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92639.0>, params: %{}, path_info: ["sources", "4", "media", "50678", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/4/media/50678/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FS-7zaqcRK84ACc0B"} ], 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.92638.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50678/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54188}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/4/media/50678/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92638.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/50678/force_download", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 54188}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92639.0>, params: %{}, path_info: ["sources", "4", "media", "50678", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], (truncated) 04:28:58.093 [info] GET /media/75439252-1e20-456a-a8a2-5124d7b82995/stream 04:28:58.093 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "75439252-1e20-456a-a8a2-5124d7b82995"} Pipelines: [:maybe_basic_auth] 04:28:58.094 [debug] QUERY OK source="media_items" db=0.5ms idle=509.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["75439252-1e20-456a-a8a2-5124d7b82995"] 04:28:58.094 [debug] Invalid range request for media item: 75439252-1e20-456a-a8a2-5124d7b82995 - serving full file 04:28:58.094 [info] Sent 200 in 1ms 04:28:58.195 [info] GET /media/80b13588-a4c0-4e29-98a0-90a1848f6c1b/stream 04:28:58.195 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "80b13588-a4c0-4e29-98a0-90a1848f6c1b"} Pipelines: [:maybe_basic_auth] 04:28:58.195 [info] GET /sources/7/media/50719 04:28:58.195 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50719", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 04:28:58.195 [info] GET /sources/7/media/32741 04:28:58.195 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32741", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 04:28:58.196 [debug] QUERY OK source="media_items" db=0.3ms idle=524.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" = ?) [50719] 04:28:58.196 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=300.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" = ?) [32741] 04:28:58.196 [debug] QUERY OK source="media_items" db=0.5ms idle=525.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["80b13588-a4c0-4e29-98a0-90a1848f6c1b"] 04:28:58.196 [debug] Invalid range request for media item: 80b13588-a4c0-4e29-98a0-90a1848f6c1b - serving full file 04:28:58.196 [info] Sent 200 in 1ms 04:28:58.196 [debug] QUERY OK source="tasks" db=0.2ms idle=0.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32741] 04:28:58.196 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=300.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50719] 04:28:58.197 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=102.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] 04:28:58.197 [debug] QUERY OK source="sources" db=0.5ms idle=0.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] 04:28:58.198 [debug] QUERY OK source="oban_jobs" db=0.9ms idle=0.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16363] 04:28:58.199 [debug] QUERY OK source="oban_jobs" db=1.4ms idle=1.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15089, 15575, 16074] 04:28:58.199 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:58.200 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:58.200 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:28:58.200 [debug] QUERY OK source="settings" db=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 [] 04:28:58.200 [debug] QUERY OK source="settings" db=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 [] 04:28:58.200 [debug] QUERY OK source="settings" db=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 [] 04:28:58.201 [debug] QUERY OK source="media_profiles" db=0.1ms idle=0.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] 04:28:58.201 [debug] QUERY OK source="media_profiles" db=0.1ms idle=0.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] 04:28:58.202 [info] Sent 200 in 6ms 04:28:58.202 [info] Sent 200 in 6ms 04:28:58.240 [info] GET /sources/7/media/32687 04:28:58.241 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32687", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 04:28:58.251 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms 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 WHERE (m0."id" = ?) [32687] 04:28:58.252 [debug] QUERY OK source="sources" db=0.3ms idle=50.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] 04:28:58.252 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=51.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32687] 04:28:58.253 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=51.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?,?)) [15088, 15574, 16073] 04:28:58.255 [debug] QUERY OK source="settings" db=0.6ms idle=53.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:58.256 [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 [] 04:28:58.258 [debug] QUERY OK source="settings" db=0.6ms 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 [] 04:28:58.260 [debug] QUERY OK source="media_profiles" db=0.6ms idle=7.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:58.263 [info] Sent 200 in 22ms 04:28:58.291 [info] GET /sources/7/media/32682 04:28:58.292 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32682", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 04:28:58.292 [debug] QUERY OK source="media_items" db=0.3ms idle=38.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" = ?) [32682] 04:28:58.293 [debug] QUERY OK source="tasks" db=0.2ms idle=37.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32682] 04:28:58.293 [debug] QUERY OK source="sources" db=0.1ms idle=36.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] 04:28:58.294 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=35.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 (?,?,?)) [15087, 15573, 16072] 04:28:58.302 [debug] QUERY OK source="settings" db=7.6ms 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 [] 04:28:58.305 [debug] QUERY OK source="settings" db=2.6ms idle=10.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:58.306 [debug] QUERY OK source="settings" db=0.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 [] 04:28:58.307 [debug] QUERY OK source="media_profiles" db=0.3ms idle=13.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] 04:28:58.309 [info] Sent 200 in 17ms 04:28:58.398 [info] GET /sources/3/media/47311 04:28:58.398 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "47311", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 04:28:58.399 [debug] QUERY OK source="media_items" db=0.2ms idle=105.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" = ?) [47311] 04:28:58.399 [debug] QUERY OK source="sources" db=0.1ms idle=94.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:28:58.399 [debug] QUERY OK source="tasks" db=0.3ms idle=97.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [47311] 04:28:58.400 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=93.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 (?,?,?,?,?,?,?,?,?,?,?)) [15755, 16007, 16044, 16109, 16149, 16183, 16214, 16245, 16287, 16325, 16359] 04:28:58.401 [debug] QUERY OK source="settings" db=0.1ms idle=93.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:58.401 [debug] QUERY OK source="settings" db=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 [] 04:28:58.401 [debug] QUERY OK source="settings" db=0.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:58.402 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:58.403 [info] Sent 200 in 4ms 04:28:58.410 [info] GET /sources/7/media/50511 04:28:58.410 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50511", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 04:28:58.410 [debug] QUERY OK source="media_items" db=0.2ms 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 WHERE (m0."id" = ?) [50511] 04:28:58.411 [debug] QUERY OK source="sources" db=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" = ?) [7] 04:28:58.411 [debug] QUERY OK source="tasks" db=0.3ms idle=9.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50511] 04:28:58.417 [debug] QUERY OK source="oban_jobs" db=0.4ms queue=5.0ms idle=10.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16331] 04:28:58.418 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=15.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:58.418 [debug] QUERY OK source="settings" db=0.2ms 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 [] 04:28:58.419 [debug] QUERY OK source="settings" db=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 [] 04:28:58.420 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.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] 04:28:58.422 [info] Sent 200 in 11ms 04:28:58.448 [info] GET /sources/7/media/50510 04:28:58.448 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50510", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 04:28:58.449 [debug] QUERY OK source="media_items" db=0.4ms idle=31.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" = ?) [50510] 04:28:58.449 [debug] QUERY OK source="tasks" db=0.2ms idle=30.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50510] 04:28:58.449 [debug] QUERY OK source="sources" db=0.3ms idle=30.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] 04:28:58.450 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=30.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" = ?) [16330] 04:28:58.450 [debug] QUERY OK source="settings" db=0.1ms idle=30.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:58.451 [debug] QUERY OK source="settings" db=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 [] 04:28:58.451 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:28:58.452 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:28:58.453 [info] Sent 200 in 5ms 04:29:00.409 [info] {"source":"oban","duration":249,"event":"plugin:stop","jobs":[],"plugin":"Oban.Plugins.Cron"} 04:29:09.441 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:29:17.845 [info] GET /sources/5 04:29:17.845 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 04:29:17.846 [debug] QUERY OK source="sources" db=0.3ms idle=1437.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 04:29:17.846 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1437.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] 04:29:17.849 [debug] QUERY OK source="tasks" db=2.1ms idle=1273.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 04:29:17.849 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=440.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" = ?) [16358] 04:29:17.850 [debug] QUERY OK source="settings" db=0.1ms idle=275.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:17.850 [debug] QUERY OK source="settings" db=0.2ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:17.851 [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 [] 04:29:17.852 [debug] QUERY OK source="sources" db=0.2ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 04:29:17.853 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 04:29:17.854 [debug] QUERY OK source="media_items" db=0.6ms idle=3.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 04:29:17.855 [debug] QUERY OK source="sources" db=0.1ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 04:29:17.855 [debug] QUERY OK source="media_items" db=0.1ms idle=4.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 04:29:17.856 [debug] QUERY OK source="media_items" db=0.3ms idle=3.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 04:29:17.856 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 04:29:17.857 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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"))))) [5] 04:29:17.857 [debug] QUERY OK source="media_items" db=0.4ms idle=1.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 ? [5, 10, 0] 04:29:17.858 [info] Sent 200 in 13ms 04:29:18.247 [info] GET /sources/6 04:29:18.247 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 04:29:18.248 [debug] QUERY OK source="sources" db=0.2ms idle=392.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] 04:29:18.248 [debug] QUERY OK source="media_profiles" db=0.1ms idle=392.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] 04:29:18.249 [debug] QUERY OK source="tasks" db=0.4ms idle=391.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 04:29:18.249 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=391.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" = ?) [16365] 04:29:18.249 [debug] QUERY OK source="settings" db=0.0ms idle=391.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.249 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.250 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.251 [debug] QUERY OK source="sources" db=0.1ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 04:29:18.251 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 04:29:18.252 [debug] QUERY OK source="media_items" db=0.4ms idle=1.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 04:29:18.252 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 04:29:18.252 [debug] QUERY OK source="media_items" db=0.1ms idle=2.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 04:29:18.253 [debug] QUERY OK source="media_items" db=0.2ms idle=1.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] 04:29:18.253 [debug] QUERY OK source="sources" db=0.0ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 04:29:18.254 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [6] 04:29:18.254 [debug] QUERY OK source="media_items" db=0.3ms idle=1.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 04:29:18.255 [info] Sent 200 in 7ms 04:29:18.369 [info] GET /sources/3/edit 04:29:18.369 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 04:29:18.370 [debug] QUERY OK source="sources" db=0.2ms idle=117.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 04:29:18.370 [debug] QUERY OK source="media_profiles" db=0.1ms idle=117.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" [] 04:29:18.370 [debug] QUERY OK source="settings" db=0.1ms idle=116.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.371 [debug] QUERY OK source="settings" db=0.0ms idle=116.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.371 [debug] QUERY OK source="settings" db=0.1ms idle=116.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.372 [info] Sent 200 in 3ms 04:29:18.461 [info] GET /sources/4/edit 04:29:18.462 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 04:29:18.462 [debug] QUERY OK source="sources" db=0.2ms idle=91.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" = ?) [4] 04:29:18.462 [debug] QUERY OK source="media_profiles" db=0.1ms idle=92.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" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 04:29:18.463 [debug] QUERY OK source="settings" db=0.0ms idle=92.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.463 [debug] QUERY OK source="settings" db=0.1ms idle=92.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.463 [debug] QUERY OK source="settings" db=0.0ms idle=92.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.464 [info] Sent 200 in 3ms 04:29:18.484 [info] GET /sources/7/edit 04:29:18.484 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 04:29:18.485 [debug] QUERY OK source="sources" db=0.2ms idle=22.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 04:29:18.485 [debug] QUERY OK source="media_profiles" db=0.0ms idle=22.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 04:29:18.485 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.486 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.486 [debug] QUERY OK source="settings" db=0.1ms 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 [] 04:29:18.487 [info] Sent 200 in 3ms 04:29:18.518 [info] GET /sources/6/edit 04:29:18.518 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 04:29:18.519 [debug] QUERY OK source="sources" db=0.2ms idle=33.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] 04:29:18.519 [debug] QUERY OK source="media_profiles" db=0.1ms idle=33.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 04:29:18.519 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.519 [debug] QUERY OK source="settings" db=0.1ms 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 [] 04:29:18.520 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.521 [info] Sent 200 in 3ms 04:29:18.548 [info] GET /sources/5/edit 04:29:18.549 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 04:29:18.549 [debug] QUERY OK source="sources" db=0.2ms idle=30.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 04:29:18.550 [debug] QUERY OK source="media_profiles" db=0.1ms idle=30.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" [] 04:29:18.550 [debug] QUERY OK source="settings" db=0.1ms idle=30.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.550 [debug] QUERY OK source="settings" db=0.1ms idle=30.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.551 [debug] QUERY OK source="settings" db=0.1ms idle=30.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.552 [info] Sent 200 in 3ms 04:29:18.567 [info] GET /sources/new 04:29:18.567 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 04:29:18.567 [debug] QUERY OK source="media_profiles" db=0.2ms idle=17.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 04:29:18.567 [debug] QUERY OK source="settings" db=0.1ms idle=17.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.568 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.568 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.568 [debug] QUERY OK source="settings" db=0.0ms idle=17.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.569 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.570 [info] Sent 200 in 3ms 04:29:18.611 [info] GET /sources/3/force_metadata_refresh 04:29:18.611 [debug] QUERY OK source="settings" db=0.1ms idle=43.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.612 [debug] QUERY OK source="settings" db=0.1ms idle=43.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.612 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:29:18.612 [error] #PID<0.92699.0> running PinchflatWeb.Endpoint (connection #PID<0.92698.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/3/force_metadata_refresh ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92698.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36778}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92699.0>, params: %{}, path_info: ["sources", "3", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/3/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FUMG-O_cepMYABdoC"} ], 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.92698.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36778}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/3/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92698.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36778}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92699.0>, params: %{}, path_info: ["sources", "3", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/3/force_metadata_refres (truncated) 04:29:18.673 [info] GET /sources/4/force_metadata_refresh 04:29:18.673 [debug] QUERY OK source="settings" db=0.2ms idle=104.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.673 [debug] QUERY OK source="settings" db=0.0ms idle=104.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.674 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:29:18.674 [error] #PID<0.92701.0> running PinchflatWeb.Endpoint (connection #PID<0.92700.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/4/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/4/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92700.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36788}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92701.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/4/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FUMVvrLvlWOkABdoi"} ], 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.92700.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36788}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/4/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92700.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36788}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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.moozuk.net", method: "GET", owner: #PID<0.92701.0>, params: %{}, path_info: ["sources", "4", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/4/force_metadata_refres (truncated) 04:29:18.687 [info] GET /sources/7/force_metadata_refresh 04:29:18.688 [debug] QUERY OK source="settings" db=0.4ms idle=111.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.688 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.688 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 04:29:18.688 [error] #PID<0.92703.0> running PinchflatWeb.Endpoint (connection #PID<0.92702.0>, stream id 1) terminated Server: pinchflat.moozuk.net:80 (http) Request: GET /sources/7/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/7/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92702.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36790}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYNUlENlRHb1lTalRXTndwUEZEMFg5NUst.7f4sRqXYuU70y4mT5L1bTaGj5QFsYKoXuzSn_uBxEUU", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYNUlENlRHb1lTalRXTndwUEZEMFg5NUst.7f4sRqXYuU70y4mT5L1bTaGj5QFsYKoXuzSn_uBxEUU" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.92703.0>, params: %{}, path_info: ["sources", "7", "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.moozuk.net", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 35, 254}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYNUlENlRHb1lTalRXTndwUEZEMFg5NUst.7f4sRqXYuU70y4mT5L1bTaGj5QFsYKoXuzSn_uBxEUU" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYNUlENlRHb1lTalRXTndwUEZEMFg5NUst.7f4sRqXYuU70y4mT5L1bTaGj5QFsYKoXuzSn_uBxEUU"}, {"host", "pinchflat.moozuk.net"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.68"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.68"} ], request_path: "/sources/7/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GN-FUMZLGqQFIKkABdpC"} ], 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.92702.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36790}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYNUlENlRHb1lTalRXTndwUEZEMFg5NUst.7f4sRqXYuU70y4mT5L1bTaGj5QFsYKoXuzSn_uBxEUU", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, 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/7/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.92702.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_metadata_refresh", host: "pinchflat.moozuk.net", peer: {{192, 168, 35, 254}, 36790}, bindings: %{}, sock: {{172, 16, 6, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYNUlENlRHb1lTalRXTndwUEZEMFg5NUst.7f4sRqXYuU70y4mT5L1bTaGj5QFsYKoXuzSn_uBxEUU", "host" => "pinchflat.moozuk.net", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.68", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.68" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", streamid: 1, has_body: false, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYNUlENlRHb1lTalRXTndwUEZEMFg5NUst.7f4sRqXYuU70y4mT5L1bTaGj5QFsYKoXuzSn_uBxEUU" }, halted: false, host: "pinchflat.moozuk.net", method: "GET", owner: #PID<0.92703.0>, params: %{}, path_info: ["sources", "7", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Ro (truncated) 04:29:18.721 [info] GET /media_profiles/1 04:29:18.721 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 04:29:18.722 [debug] QUERY OK source="media_profiles" db=0.2ms idle=109.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:29:18.722 [debug] QUERY OK source="sources" db=0.2ms idle=48.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."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 04:29:18.723 [info] GET /sources/4/media/50467 04:29:18.723 [debug] QUERY OK source="settings" db=0.1ms 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 [] 04:29:18.723 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50467", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 04:29:18.723 [debug] QUERY OK source="settings" db=0.1ms idle=34.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.723 [debug] QUERY OK source="media_items" db=0.4ms idle=34.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" = ?) [50467] 04:29:18.724 [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 [] 04:29:18.724 [debug] QUERY OK source="sources" db=0.6ms idle=1.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 04:29:18.725 [debug] QUERY OK source="tasks" db=0.9ms idle=1.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50467] 04:29:18.725 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16328] 04:29:18.725 [info] Sent 200 in 4ms 04:29:18.725 [debug] QUERY OK source="settings" db=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 [] 04:29:18.726 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.726 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.727 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:29:18.728 [info] Sent 200 in 5ms 04:29:18.740 [info] GET /sources/4/media/50678 04:29:18.740 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50678", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 04:29:18.741 [debug] QUERY OK source="media_items" db=0.3ms idle=15.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" = ?) [50678] 04:29:18.741 [debug] QUERY OK source="tasks" db=0.1ms idle=15.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50678] 04:29:18.742 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [4] 04:29:18.742 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=15.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" = ?) [16361] 04:29:18.742 [debug] QUERY OK source="settings" db=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 [] 04:29:18.743 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:29:18.743 [debug] QUERY OK source="settings" db=0.0ms 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 [] 04:29:18.744 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 04:29:18.745 [info] Sent 200 in 4ms